From e64f34c55170943aa35bb806700c8ba3e99c50a7 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 19 Aug 2018 16:44:56 +0100 Subject: 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 --- git-debrebase | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'git-debrebase') 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; -- cgit v1.2.3