chiark / gitweb /
dgit-repos-server: Break out movetogarbage
[dgit.git] / infra / dgit-repos-server
index 734fd719955221e053b9d6f77b43fd576535380c..ed27c0eaec78efad42b45e079b69a6582c77fba1 100755 (executable)
@@ -213,6 +213,15 @@ sub mkrepo_fromtemplate ($) {
     !$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 () {
@@ -642,12 +651,7 @@ sub parseargsdispatch () {
 
     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 $!;