summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Harkes <jaharkes@cs.cmu.edu>2005-12-17 01:01:06 -0500
committerJunio C Hamano <junkio@cox.net>2005-12-16 22:28:19 -0800
commit69224716f78d6a772318e73060a70ba5ae67e55b (patch)
treeb3bbfc0ee8d6028a2d5b614804882f58fd0a8975
parent68283999f8ae0e9286f8b7f199905b77d608cb80 (diff)
downloadgit-69224716f78d6a772318e73060a70ba5ae67e55b.tar.gz
Fix git-am --skip
git-am --skip does not unpack the next patch and ends up reapplying the old patch, believing that it is the new patch in the sequence. If the old patch applied successfully it will commit it with the supposedly skipped log message and ends up dropping the following patch. If the patch did not apply the user is left with the conflict he tried to skip and has to unpack the next patch in the sequence by hand to get git-am back on track. By clearing the resume variable whenever skips bumps the sequence counter we correctly unpack the next patch. I also added another resume= in the case a patch file is missing from the sequence to avoid the same problem when a file in the sequence was removed. Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-xgit-am.sh2
1 files changed, 2 insertions, 0 deletions
diff --git a/git-am.sh b/git-am.sh
index 1a114bcc08..731ab1fffa 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -211,6 +211,7 @@ this=`cat "$dotest/next"`
if test "$skip" = t
then
this=`expr "$this" + 1`
+ resume=
fi
if test "$this" -gt "$last"
@@ -225,6 +226,7 @@ do
msgnum=`printf "%0${prec}d" $this`
next=`expr "$this" + 1`
test -f "$dotest/$msgnum" || {
+ resume=
go_next
continue
}