summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2018-08-12 01:25:18 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-08-12 01:45:44 +0100
commit63ddbee7d0c3bdfaf34cce3950c1a80fb97602c8 (patch)
tree1f1e25261411913e17210287b5384bb51d954b19 /git-debrebase
parent6a7d91dc81cbc8922bebc4930991902a9a00da79 (diff)
git-debrebase: merge: Actually use merge resolutions
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase20
1 files changed, 14 insertions, 6 deletions
diff --git a/git-debrebase b/git-debrebase
index 96966ad..f9b6254 100755
--- a/git-debrebase
+++ b/git-debrebase
@@ -1481,12 +1481,20 @@ sub walk ($;$$$) {
read_tree_debian($cltree);
@parents = map { $_->{Breakwater} } @{ $cl->{Parents} };
} elsif ($method eq 'MergeMergeSeries') {
- print "Running merge resolution for $cl->{CommitId}...\n";
- $mwrecknote->('new-base', $build);
- $build = merge_series
- $build, $cl->{MergeWreckNotes},
- $cl->{MergeInterchangeBaseInfo},
- @{ $cl->{Parents} };
+ my $cachehit = reflog_cache_lookup
+ $merge_cache_ref, "vanilla-merge $cl->{CommitId}";
+ if ($cachehit) {
+ print "Using supplied resolution for $cl->{CommitId}...\n";
+ $build = $cachehit;
+ $mwrecknote->('cached-resolution', $build);
+ } else {
+ print "Running merge resolution for $cl->{CommitId}...\n";
+ $mwrecknote->('new-base', $build);
+ $build = merge_series
+ $build, $cl->{MergeWreckNotes},
+ $cl->{MergeInterchangeBaseInfo},
+ @{ $cl->{Parents} };
+ }
$last_anchor = $cl->{MergeBestAnchor};
# Check for mismerges: