summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Tan <pyokagan@gmail.com>2015-06-06 19:46:09 +0800
committerJunio C Hamano <gitster@pobox.com>2015-06-08 13:06:44 -0700
commitf8da6801e2fb3e46a42031b860c6411ef76a0335 (patch)
tree2f6c105cb4997b6f42a49aee4e8a617729cd78c7
parent2c970c9ec3af9e162951a1b22d42c1a4dd9a8fed (diff)
downloadgit-f8da6801e2fb3e46a42031b860c6411ef76a0335.tar.gz
am --skip: support skipping while on unborn branch
When git am --skip is run, git am will copy HEAD's tree entries to the index with "git reset HEAD". However, on an unborn branch, HEAD does not point to a tree, so "git reset HEAD" will fail. Fix this by treating HEAD as en empty tree when we are on an unborn branch. Signed-off-by: Paul Tan <pyokagan@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-am.sh4
-rwxr-xr-xt/t4151-am-abort.sh10
2 files changed, 11 insertions, 3 deletions
diff --git a/git-am.sh b/git-am.sh
index c5e139ff33..e0d067c00e 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -499,9 +499,7 @@ then
git read-tree --reset -u $head_tree $head_tree &&
index_tree=$(git write-tree) &&
git read-tree -m -u $index_tree $head_tree
- orig_head=$(cat "$GIT_DIR/ORIG_HEAD")
- git reset HEAD
- git update-ref ORIG_HEAD $orig_head
+ git read-tree $head_tree
;;
,t)
if test -f "$dotest/rebasing"
diff --git a/t/t4151-am-abort.sh b/t/t4151-am-abort.sh
index 2683ffaacd..2a7c5247f9 100755
--- a/t/t4151-am-abort.sh
+++ b/t/t4151-am-abort.sh
@@ -92,4 +92,14 @@ test_expect_success 'am -3 stops on conflict on unborn branch' '
test 4 = "$(cat otherfile-4)"
'
+test_expect_success 'am -3 --skip clears index on unborn branch' '
+ test_path_is_dir .git/rebase-apply &&
+ echo tmpfile >tmpfile &&
+ git add tmpfile &&
+ git am --skip &&
+ test -z "$(git ls-files)" &&
+ test_path_is_missing otherfile-4 &&
+ test_path_is_missing tmpfile
+'
+
test_done