summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2017-07-09 14:55:37 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-16 12:25:49 +0100
commit11101f17a4c7203e6285dad67a5e86b0bdbba02a (patch)
treee691093d79cc954a38a0f7d82edfe51693d05afe /git-debrebase
parent16cef99e719ad15ae70839a3a45a4d5b1f04a1b3 (diff)
git-debrebase: finish get_differs ?
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase31
1 files changed, 20 insertions, 11 deletions
diff --git a/git-debrebase b/git-debrebase
index e5e9203..a39699a 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) = @_;