aboutsummaryrefslogtreecommitdiff
path: root/git-am.sh
diff options
context:
space:
mode:
authorOlivier Marin <dkr@freesurf.fr>2008-07-21 15:39:06 +0200
committerJunio C Hamano <gitster@pobox.com>2008-07-22 00:06:04 -0700
commit95f8ebbfc7997b3114d4f09360501324905c4e6d (patch)
tree905c1d73221181f53840b5d7a995581181f30030 /git-am.sh
parentd1f63a37caae19314bbd55c9fe3554d2e53537e7 (diff)
downloadgit-95f8ebbfc7997b3114d4f09360501324905c4e6d.tar.gz
git-95f8ebbfc7997b3114d4f09360501324905c4e6d.tar.xz
git am --skip: clean the index while preserving local changes
In 3-way merge, "am" will let the index with unmerged path waiting for us to resolve conflicts and continue. But if we want to --skip instead, "am" refuses to continue because of the dirty index. With this patch, "am" will clean the index without touching files locally modified, before continuing. Signed-off-by: Olivier Marin <dkr@freesurf.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-am.sh')
-rwxr-xr-xgit-am.sh12
1 files changed, 9 insertions, 3 deletions
diff --git a/git-am.sh b/git-am.sh
index fcbffb2ba..7864b5f58 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -202,8 +202,15 @@ then
die "previous rebase directory $dotest still exists but mbox given."
resume=yes
- case "$abort" in
- t)
+ case "$skip,$abort" in
+ t,)
+ git rerere clear
+ git read-tree --reset -u HEAD HEAD
+ orig_head=$(cat "$GIT_DIR/ORIG_HEAD")
+ git reset HEAD
+ git update-ref ORIG_HEAD $orig_head
+ ;;
+ ,t)
git rerere clear
git read-tree --reset -u HEAD ORIG_HEAD
git reset ORIG_HEAD
@@ -297,7 +304,6 @@ last=`cat "$dotest/last"`
this=`cat "$dotest/next"`
if test "$skip" = t
then
- git rerere clear
this=`expr "$this" + 1`
resume=
fi