X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=0c8183dc2d614abe2cd27f91188d205752ad1bcd;hb=71350fe30f7449b24dc2884b42cc5ff50a2bf84e;hp=295bbdf1ed1c323cb48bdfe9c6cbb3de60fdce32;hpb=561bf70f8de802ba788e3d2f3be787015e5b02c0;p=dgit.git diff --git a/dgit b/dgit index 295bbdf1..0c8183dc 100755 --- a/dgit +++ b/dgit @@ -2511,17 +2511,22 @@ END } sub quiltify_trees_differ ($$;$) { - my ($x,$y,$ignoregitignore) = @_; - # returns 1 iff the two tree objects differ other than in debian/ + my ($x,$y,$finegrained) = @_; + # returns true iff the two tree objects differ other than in debian/ + # returns bitmas 01 - differ in upstream files except .gitignore + # 02 - differ in .gitignore local $/=undef; - my @cmd = (@git, qw(diff-tree --name-only -z), $x, $y); + my @cmd = (@git, qw(diff-tree --name-only -z)); + push @cmd, qw(-r) if $finegrained; + push @cmd, $x, $y; my $diffs= cmdoutput @cmd; + my $r = 0; foreach my $f (split /\0/, $diffs) { - next if $f eq 'debian'; - next if $f eq '.gitignore' && $ignoregitignore; - return 1; + next if $f =~ m#^debian(?:/.*)?$#s; + $r |= ($f =~ m#^(?:.*/)?.gitignore$#s) ? 02 : 01; } - return 0; + printdebug "quiltify_trees_differ $x $y => $r\n"; + return $r; } sub quiltify_tree_sentinelfiles ($) { @@ -2536,8 +2541,8 @@ sub quiltify_tree_sentinelfiles ($) { sub quilt_could_gbp ($$$) { my ($userhead,$unapplied,$applied) = @_; return - !quiltify_trees_differ($userhead,$unapplied,1) && - quiltify_trees_differ($userhead,$applied,1); + !(quiltify_trees_differ($userhead,$unapplied,1) & 01) && + (quiltify_trees_differ($userhead,$applied,1) & 01); } sub quiltify ($$$$) { @@ -2942,7 +2947,8 @@ END my @files=qw(debian/source/format debian/rules debian/control debian/changelog); - foreach my $maybe (qw(debian/patches debian/source/options)) { + foreach my $maybe (qw(debian/patches debian/source/options + debian/tests/control)) { next unless stat_exists "../../../$maybe"; push @files, $maybe; }