chiark / gitweb /
Split brain pseudomerge: Test $overwrite_version for definedness
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 13c8addd895df282131000851f4355c6ba22344a..451985db3859a10dfc36912d30d9c4192b673659 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -2408,7 +2408,7 @@ END
 
     return $dgitview unless defined $archive_hash;
 
 
     return $dgitview unless defined $archive_hash;
 
-    if ($overwrite_version) {
+    if (defined $overwrite_version) {
        progress "Declaring that HEAD inciudes all changes in archive...";
        progress "Checking that $overwrite_version does so...";
        $cond_equal->([ $overwrite_version, '--overwrite= version' ],
        progress "Declaring that HEAD inciudes all changes in archive...";
        progress "Checking that $overwrite_version does so...";
        $cond_equal->([ $overwrite_version, '--overwrite= version' ],
@@ -2429,7 +2429,7 @@ END
 
     $cond_equal->($i_dgit, $i_archive);
     $cond_ff->($i_dep14, $i_dgit);
 
     $cond_equal->($i_dgit, $i_archive);
     $cond_ff->($i_dep14, $i_dgit);
-    $overwrite_version or $cond_ff->($i_dep14, [ $maintview, 'HEAD' ]);
+    $overwrite_version // $cond_ff->($i_dep14, [ $maintview, 'HEAD' ]);
 
     my $tree = cmdoutput qw(git rev-parse), "${dgitview}:";
     my $authline = clogp_authline $clogp;
 
     my $tree = cmdoutput qw(git rev-parse), "${dgitview}:";
     my $authline = clogp_authline $clogp;
@@ -2445,7 +2445,7 @@ author $authline
 commiter $authline
 
 END
 commiter $authline
 
 END
-    if ($overwrite_version) {
+    if (defined $overwrite_version) {
        print MC <<END;
 Declare fast forward from $overwrite_version
 
        print MC <<END;
 Declare fast forward from $overwrite_version
 
@@ -2749,7 +2749,7 @@ END
     responder_send_command("param head $dgithead");
     responder_send_command("param csuite $csuite");
     responder_send_command("param tagformat $tagformat");
     responder_send_command("param head $dgithead");
     responder_send_command("param csuite $csuite");
     responder_send_command("param tagformat $tagformat");
-    if (quiltmode_splitbrain) {
+    if (defined $maintviewhead) {
        die unless ($protovsn//4) >= 4;
        responder_send_command("param maint-view $maintviewhead");
     }
        die unless ($protovsn//4) >= 4;
        responder_send_command("param maint-view $maintviewhead");
     }
@@ -3316,6 +3316,13 @@ sub quiltify_splitbrain ($$$$$$) {
        }  
        fail $msg;
     }
        }  
        fail $msg;
     }
+    if ($quilt_mode =~ m/dpm/ &&
+       ($diffbits->{H2A} & 01)) {
+       fail <<END;
+--quilt=$quilt_mode specified, implying patches-applied git tree
+ but git tree differs from result of applying debian/patches to upstream
+END
+    }
     if ($quilt_mode =~ m/gbp|unapplied/ &&
        ($diffbits->{O2A} & 01)) { # some patches
        quiltify_splitbrain_needed();
     if ($quilt_mode =~ m/gbp|unapplied/ &&
        ($diffbits->{O2A} & 01)) { # some patches
        quiltify_splitbrain_needed();
@@ -3325,6 +3332,14 @@ sub quiltify_splitbrain ($$$$$$) {
        runcmd @git, qw(update-ref refs/heads/dgit-view HEAD);
        runcmd @git, qw(checkout -q dgit-view);
     }
        runcmd @git, qw(update-ref refs/heads/dgit-view HEAD);
        runcmd @git, qw(checkout -q dgit-view);
     }
+    if ($quilt_mode =~ m/gbp|dpm/ &&
+       ($diffbits->{O2A} & 02)) {
+       fail <<END
+--quilt=$quilt_mode specified, implying that HEAD is for use with a
+ tool which does not create patches for changes to upstream
+ .gitignores: but, such patches exist in debian/patches.
+END
+    }
     if (($diffbits->{H2O} & 02) && # user has modified .gitignore
        !($diffbits->{O2A} & 02)) { # patches do not change .gitignore
        quiltify_splitbrain_needed();
     if (($diffbits->{H2O} & 02) && # user has modified .gitignore
        !($diffbits->{O2A} & 02)) { # patches do not change .gitignore
        quiltify_splitbrain_needed();