return $r >> 8;
}
+sub mkemptyrepo ($$) {
+ my ($dir,$sharedperm) = @_;
+ runcmd qw(git init --bare --quiet), "--shared=$sharedperm", $dir;
+}
+
+sub mkrepo_fromtemplate ($) {
+ my ($dir) = @_;
+ my $template = "$dgitrepos/_template";
+ debug "copy tempalate $template -> $dir";
+ my $r = system qw(cp -a --), $template, $dir;
+ !$r or die "create new repo $dir failed: $r $!";
+}
+
+sub movetogarbage () {
+ my $garbagerepo = "$dgitrepos/_tmp/${package}_garbage";
+ acquiretree($garbagerepo,1);
+ rmtree $garbagerepo;
+ rename $realdestrepo, $garbagerepo
+ or $! == ENOENT
+ or die "rename repo $realdestrepo to $garbagerepo: $!";
+}
+
#----- git-receive-pack -----
sub fixmissing__git_receive_pack () {
mkrepotmp();
$destrepo = "$dgitrepos/_tmp/${package}_prospective";
acquiretree($destrepo, 1);
- my $template = "$dgitrepos/_template";
- debug "fixmissing copy tempalate $template -> $destrepo";
- my $r = system qw(cp -a --), $template, $destrepo;
- !$r or die "create new repo failed failed: $r $!";
+ mkrepo_fromtemplate($destrepo);
}
sub makeworkingclone () {
return if stat $destrepo;
die $! unless $!==ENOENT;
rmtree "$destrepo.new";
- umask 022;
- runcmd qw(git init --bare --quiet), "$destrepo.new";
+ mkemptyrepo "$destrepo.new", "0644";
rename "$destrepo.new", $destrepo or die $!;
unlink "$destrepo.lock" or die $!;
close $lfh;
my ($policy, $pollock) = policyhook(FRESHREPO,'check-package',$package);
if ($policy & FRESHREPO) {
- my $garbagerepo = "$dgitrepos/_tmp/${package}_garbage";
- acquiretree($garbagerepo,1);
- rmtree $garbagerepo;
- rename $realdestrepo, $garbagerepo
- or $! == ENOENT
- or die "rename repo $destrepo to $garbagerepo: $!";
+ movetogarbage;
}
close $pollock or die $!;