From 11101f17a4c7203e6285dad67a5e86b0bdbba02a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 9 Jul 2017 14:55:37 +0100 Subject: [PATCH] git-debrebase: finish get_differs ? --- git-debrebase | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/git-debrebase b/git-debrebase index e5e92038..a39699ae 100755 --- a/git-debrebase +++ b/git-debrebase @@ -147,9 +147,11 @@ our @git = qw(git); sub get_differs ($$) { my ($x,$y) = @_; - # This resembles quiltify_trees_differ, in dgit, a bit. But: we - # don't care about modes, or dpkg-source-unrepresentable changes, - # and we don't need the plethora of different modes. + # This resembles quiltify_trees_differ, in dgit, a bit. + # But we don't care about modes, or dpkg-source-unrepresentable + # changes, and we don't need the plethora of different modes. + # Conversely we need to distinguish different kinds of changes to + # debian/ and debian/patches/. my $differs = 0; @@ -173,6 +175,8 @@ sub get_differs ($$) { $rundiff(undef, ':debian', sub { $differs |= $f eq 'patches' ? D_PAT_OTH : D_DEB; }); + die "mysterious debian changes $x..$y" + unless $differs & (D_PAT_OTH|D_DEB); } if ($differs & D_PAT_OTH) { @@ -186,22 +190,27 @@ sub get_differs ($$) { no warnings qw(exiting); if (!defined $mode) { $mode = $f; next; - } elsif ($mode eq 'A' && $f !~ m/^\w+\.series$/) { + } + my $ok; + if ($mode eq 'A' && $f !~ m/(?:^|\.)series$/s) { + $ok = 1; } elsif ($mode eq 'M' && $f eq 'series') { my $x_s = git_cat_file "$x:debian/patches/series", 'blob'; my $y_s = git_cat_file "$y:debian/patches/series", 'blob'; chomp $x_s; $x_s .= "\n"; - $pat_oth->() unless $x_s = substr($y_s, 0, length $x_s); + $ok = $x_s eq substr($y_s, 0, length $x_s); } else { - $pat_oth->(); + # nope } $mode = undef; + $differs |= $ok ? D_PAT_ADD : D_PAT_OTH; }); - - - - } - $f eq ' + die "mysterious debian/patches changes $x..$y" + unless $differs & (D_PAT_ADD|D_PAT_OTH); + } + + return $differs; +} sub commit_pr_info ($) { my ($r) = @_; -- 2.30.2