summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2018-08-19 16:44:56 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-08-19 17:46:00 +0100
commite64f34c55170943aa35bb806700c8ba3e99c50a7 (patch)
treed45dcff29e6f34aff97982363820b1ebff83dfeb /git-debrebase
parentb39329c0ead53a3f51ed7c7fa946a79ff9463f18 (diff)
git-debrebase: Actually avoid read-tree in walk when not rewriting
See git-debrebase: Prep for avoid read-tree in walk when not rewriting for the motivation. Here we try to check that the commit we would make, if we were actually calling read-tree, write-tree and hash-object, would be identical to the one we are reusing. In particular, we check that the upstream files, and the debian/ directory, have the contents we would feed to read-tree. And we check that the parent list is the same. With these checks this new algorithm is, I think, safe enough to just use always. So set $opt_careful to 0. We will abolish this variable in a moment. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase14
1 files changed, 13 insertions, 1 deletions
diff --git a/git-debrebase b/git-debrebase
index d04f2a3..c240d88 100755
--- a/git-debrebase
+++ b/git-debrebase
@@ -53,7 +53,7 @@ END
our ($opt_force, $opt_careful, $opt_noop_ok, @opt_anchors);
our ($opt_defaultcmd_interactive);
-$opt_careful = 1;
+$opt_careful = 0;
our $us = qw(git-debrebase);
@@ -1612,6 +1612,18 @@ sub walk ($;$$$) {
$build = $newcommit;
} else {
$build = $cl->{CommitId};
+ trees_diff_walk "$want_upstream:", "$build:", sub {
+ my ($n) = @_;
+ no warnings qw(exiting);
+ next if $n eq 'debian/';
+ confess "mismatch @_ ?";
+ };
+ trees_diff_walk "$want_debian:debian", "$build:debian", sub {
+ confess "mismatch @_ ?";
+ };
+ my @old_parents = map { $_->{CommitId} } @{ $cl->{Parents} };
+ confess "mismatch @parents != @old_parents ?"
+ unless "@parents" eq "@old_parents";
}
if (grep { $method eq $_ } qw(DgitImportUpstreamUpdate)) {
$last_anchor = $cur;