chiark / gitweb /
Split brain: Provide a lot more information to quiltify_splitbrain (nfc)
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 4f12594f6ade6f89f0d04d6efe16e61a8451e242..d44f526d160da054402ae038dfbc0929fdeb429c 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -2515,8 +2515,8 @@ END
     }
 }
 
-sub quiltify_trees_differ ($$;$) {
-    my ($x,$y,$finegrained) = @_;
+sub quiltify_trees_differ ($$;$$) {
+    my ($x,$y,$finegrained,$ignorenamesr) = @_;
     # returns true iff the two tree objects differ other than in debian/
     # with $finegrained,
     # returns bitmask 01 - differ in upstream files except .gitignore
@@ -2531,7 +2531,9 @@ sub quiltify_trees_differ ($$;$) {
     my $r = 0;
     foreach my $f (split /\0/, $diffs) {
        next if $f =~ m#^debian(?:/.*)?$#s;
-       $r |= ($f =~ m#^(?:.*/)?.gitignore$#s) ? 02 : 01;
+       my $isignore = $f =~ m#^(?:.*/)?.gitignore$#s;
+       $r |= $isignore ? 02 : 01;
+       $ignorenamesr->{$f}=1 if $ignorenamesr && $isignore;
     }
     printdebug "quiltify_trees_differ $x $y => $r\n";
     return $r;
@@ -2554,8 +2556,8 @@ sub quiltify_splitbrain_needed () {
     }
 }
 
-sub quiltify_splitbrain ($$) {
-    my ($clogp, $diffbits) = @_;
+sub quiltify_splitbrain ($$$$$) {
+    my ($clogp, $unapplied, $headref, $diffbits, $editedignores) = @_;
     if ($quilt_mode !~ m/gbp|dpm/) {
        # treat .gitignore just like any other upstream file
        $diffbits = { %$diffbits };
@@ -3054,11 +3056,12 @@ END
     # We calculate some guesswork now about what kind of tree this might
     # be.  This is mostly for error reporting.
 
+    my %editedignores;
     my $diffbits = {
         # H = user's HEAD
         # O = orig, without patches applied
         # A = "applied", ie orig with H's debian/patches applied
-        H2O => quiltify_trees_differ($headref,  $unapplied, 1),
+        H2O => quiltify_trees_differ($headref,  $unapplied, 1,\%editedignores),
         H2A => quiltify_trees_differ($headref,  $oldtiptree,1),
         O2A => quiltify_trees_differ($unapplied,$oldtiptree,1),
     };
@@ -3087,7 +3090,8 @@ END
         " --quilt=gbp --quilt=dpm --quilt=unapplied ?";
 
     if ($quilt_mode =~ m/gbp|dpm|unapplied/) {
-       quiltify_splitbrain($clogp, $diffbits);
+       quiltify_splitbrain($clogp, $unapplied, $headref,
+                            $diffbits, \%editedignores);
        return;
     }