Data in rr-cache isn't valid after a patch application is skipped or and aborted, so our next commit could be misrecorded as a resolution of that skipped/failed commit, which is wrong. Signed-off-by: Eric Wong <normalperson@xxxxxxxx> --- git-am.sh | 4 ++++ git-rebase.sh | 8 ++++++++ git-rerere.perl | 12 ++++++++++++ 3 files changed, 24 insertions(+), 0 deletions(-) diff --git a/git-am.sh b/git-am.sh index afe322b..28ccae3 100755 --- a/git-am.sh +++ b/git-am.sh @@ -246,6 +246,10 @@ last=`cat "$dotest/last"` this=`cat "$dotest/next"` if test "$skip" = t then + if test -d "$GIT_DIR/rr-cache" + then + git-rerere clear + fi this=`expr "$this" + 1` resume= fi diff --git a/git-rebase.sh b/git-rebase.sh index 25530df..2b4f347 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -139,6 +139,10 @@ do --skip) if test -d "$dotest" then + if test -d "$GIT_DIR/rr-cache" + then + git-rerere clear + fi prev_head="`cat $dotest/prev_head`" end="`cat $dotest/end`" msgnum="`cat $dotest/msgnum`" @@ -157,6 +161,10 @@ do exit ;; --abort) + if test -d "$GIT_DIR/rr-cache" + then + git-rerere clear + fi if test -d "$dotest" then rm -r "$dotest" diff --git a/git-rerere.perl b/git-rerere.perl index d3664ff..dd86577 100755 --- a/git-rerere.perl +++ b/git-rerere.perl @@ -172,6 +172,18 @@ sub merge { -d "$rr_dir" || exit(0); read_rr(); + +if (@ARGV && $ARGV[0] eq 'clear') { + for my $path (keys %merge_rr) { + my $name = $merge_rr{$path}; + if (-d "$rr_dir/$name") { + rmtree(["$rr_dir/$name"]); + } + } + unlink $merge_rr; + exit 0; +} + my %conflict = map { $_ => 1 } find_conflict(); # MERGE_RR records paths with conflicts immediately after merge -- 1.4.4.2.g860f4 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html