chiark / gitweb /
dgit-repos-server: Make $policy a global
[dgit.git] / infra / dgit-repos-server
index ed27c0eaec78efad42b45e079b69a6582c77fba1..ef9f968ea268ac379b2a0cd617389fb3d8fe4a67 100755 (executable)
@@ -222,6 +222,17 @@ sub movetogarbage () {
        or die "rename repo $realdestrepo to $garbagerepo: $!";
 }
 
+sub onwardpush () {
+    my @cmd = (qw(git send-pack), $destrepo);
+    push @cmd, qw(--force) if $policy & NOFFCHECK;
+    push @cmd, "$commit:refs/dgit/$suite",
+              "$tagval:refs/tags/$tagname");
+    debugcmd @cmd;
+    $!=0;
+    my $r = system @cmd;
+    !$r or die "onward push to $destrepo failed: $r $!";
+}
+
 #----- git-receive-pack -----
 
 sub fixmissing__git_receive_pack () {
@@ -523,9 +534,9 @@ sub checks () {
     debug "translated version $v";
     $tagname eq "debian/$v" or die;
 
-    my ($policy) = policyhook(NOFFCHECK, 'push',$package,
-                             $version,$suite,$tagname,
-                             join(",",@delberatelies));
+    $policy = policyhook(NOFFCHECK|FRESHREPO, 'push',$package,
+                        $version,$suite,$tagname,
+                        join(",",@delberatelies));
 
     checksuite();
 
@@ -538,16 +549,6 @@ sub checks () {
     }
 }
 
-sub onwardpush () {
-    my @cmd = (qw(git send-pack), $destrepo,
-              "$commit:refs/dgit/$suite",
-              "$tagval:refs/tags/$tagname");
-    debugcmd @cmd;
-    $!=0;
-    my $r = system @cmd;
-    !$r or die "onward push failed: $r $!";
-}      
-
 sub stunthook () {
     debug "stunthook";
     chdir $workrepo or die "chdir $workrepo: $!";