}
}
-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
# 02 - differ in .gitignore
+ # if $ignorenamesr is defined, $ingorenamesr->{$fn}
+ # is set for each modified .gitignore filename $fn
local $/=undef;
my @cmd = (@git, qw(diff-tree --name-only -z));
push @cmd, qw(-r) if $finegrained;
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;
}
}
-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 };
# 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),
};
" --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;
}