rerere: record (or avoid misrecording) resolved, skipped or aborted rebase/am
authorEric Wong <normalperson@yhbt.net>
Fri, 8 Dec 2006 21:29:56 +0000 (13:29 -0800)
committerJunio C Hamano <junkio@cox.net>
Sat, 9 Dec 2006 19:13:36 +0000 (11:13 -0800)
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.

git-am --skip, git-rebase --skip/--abort will automatically
invoke git-rerere clear to avoid this.

Also, since git-am --resolved indicates a resolution was
succesful, remember to run git-rerere to record the resolution
(and not surprise the user when the next commit is made).

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-am.sh
git-rebase.sh

index afe322b20fb0b40dfeb1cb17dc3cad09096e943a..5df6787a3f285f18d3a41c1ab2f0579f407e02de 100755 (executable)
--- 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
@@ -408,6 +412,10 @@ do
                        stop_here_user_resolve $this
                fi
                apply_status=0
+               if test -d "$GIT_DIR/rr-cache"
+               then
+                       git rerere
+               fi
                ;;
        esac
 
index 25530dfdc5ba3b88ba9f45393d3aace8faa89472..2b4f3477fa941afe4f6450f74f6f8cf43a7567c0 100755 (executable)
@@ -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"