chiark / gitweb /
dgit: Break out deliberately_not_fast_forward (nfc)
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 42f9f457332655cae0832baec4c03c4029fcad50..6e9c3044f54d745e4371209d51208f7ec1d372b2 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -162,6 +162,11 @@ sub deliberately ($) {
     return !!grep { $_ eq "--deliberately-$enquiry" } @deliberatelies;
 }
 
+sub deliberately_not_fast_forward () {
+    deliberately('not-fast-forward') ||
+       deliberately('TEST-not-fast-forward-dgit-only');
+}
+
 #---------- remote protocol support, common ----------
 
 # remote push initiator/responder protocol:
@@ -1650,9 +1655,9 @@ sub dopush ($) {
 
     if ($forceflag && defined $lastpush_hash) {
        git_for_each_tag_referring($lastpush_hash, sub {
-           my ($objid,$refobjid,$fullrefname,$tagname) = @_;
-           responder_send_command("supersedes $fullrefname=$objid");
-           $supersedes{$fullrefname} = $objid;
+           my ($tagobjid,$refobjid,$fullrefname,$tagname) = @_;
+           responder_send_command("supersedes $fullrefname=$tagobjid");
+           $supersedes{$fullrefname} = $tagobjid;
        });
     }
 
@@ -1816,8 +1821,7 @@ sub cmd_push {
     if (fetch_from_archive()) {
        if (is_fast_fwd(lrref(), 'HEAD')) {
            # ok
-       } elsif (deliberately('not-fast-forward') ||
-                deliberately('TEST-not-fast-forward-dgit-only')) {
+       } elsif (deliberately_not_fast_forward) {
            $forceflag = '+';
        } else {
            fail "dgit push: HEAD is not a descendant".