From: Ian Jackson Date: Fri, 25 Aug 2017 10:06:39 +0000 (+0100) Subject: git-debrebase: introduce DS_DEB X-Git-Tag: archive/debian/5.0~323 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=150aff96f5a8740d928e2f677f987bb821b54b4b git-debrebase: introduce DS_DEB differentiate changelog from other diffs in get_differ no change to classification output also fix a $_ eq m{...} bug! --- diff --git a/git-debrebase b/git-debrebase index 8f2e9223..f16b9b59 100755 --- a/git-debrebase +++ b/git-debrebase @@ -136,11 +136,12 @@ sub get_commit ($) { return ($`,$'); } -sub D_DEB () { return 0x1; } # debian/ (not including debian/patches/) -sub D_UPS () { return 0x2; } # upstream files -sub D_PAT_ADD () { return 0x4; } # debian/patches/ extra patches at end -sub D_PAT_OTH () { return 0x8; } # debian/patches other changes - +sub D_UPS () { 0x02; } # upstream files +sub D_PAT_ADD () { 0x04; } # debian/patches/ extra patches at end +sub D_PAT_OTH () { 0x08; } # debian/patches other changes +sub D_DEB_CLOG () { 0x10; } # debian/ (not patches/ or changelog) +sub D_DEB_OTH () { 0x20; } # debian/changelog +sub DS_DEB () { D_DEB_CLOG | D_DEB_OTH; } # debian/ (not patches/) our $playprefix = 'debrebase'; our $rd; @@ -181,16 +182,19 @@ sub get_differs ($$) { }; $rundiff->([qw(--name-only)], [], sub { - $differs |= $_ eq 'debian' ? D_DEB : D_UPS; + $differs |= $_ eq 'debian' ? DS_DEB : D_UPS; }); - if ($differs & D_DEB) { - $differs &= ~D_DEB; + if ($differs & DS_DEB) { + $differs &= ~DS_DEB; $rundiff->([qw(--name-only -r)], [qw(debian)], sub { - $differs |= $_ eq m{^debian/patches/} ? D_PAT_OTH : D_DEB; + $differs |= + m{^debian/patches/} ? D_PAT_OTH : + $_ eq 'debian/changelog' ? D_DEB_CLOG : + D_DEB_OTH; }); die "mysterious debian changes $x..$y" - unless $differs & (D_PAT_OTH|D_DEB); + unless $differs & (D_PAT_OTH|DS_DEB); } if ($differs & D_PAT_OTH) { @@ -330,7 +334,7 @@ sub classify ($) { return $classify->(qw(AddPatches)); } elsif ($d & (D_PAT_ADD|D_PAT_OTH)) { return $unknown->("edits debian/patches"); - } elsif ($d == D_DEB) { + } elsif ($d & DS_DEB and !($d & ~DS_DEB)) { my ($ty,$dummy) = git_cat_file "$ph[0]:debian"; if ($ty eq 'tree') { return $classify->(qw(Packaging)); @@ -341,7 +345,7 @@ sub classify ($) { } } elsif ($d == D_UPS) { return $classify->(qw(Upstream)); - } elsif ($d == (D_DEB|D_UPS)) { + } elsif ($d & DS_DEB and $d & D_UPS and !($d & ~(DS_DEB|D_UPS))) { return $classify->(qw(Mixed)); } elsif ($d == 0) { return $unknown->("no changes"); @@ -409,7 +413,7 @@ sub classify ($) { if (@p == 2 && !$haspatches && !$p[$prevbrw]{IsOrigin} && # breakwater never starts with an origin - !($p[$prevbrw]{Differs} & ~D_DEB) && + !($p[$prevbrw]{Differs} & ~DS_DEB) && !($p[!$prevbrw]{Differs} & ~D_UPS)) { return $classify->(qw(BreakwaterUpstreamMerge), OrigParents => [ $p[!$prevbrw] ]);