From: Junio C Hamano <gitster@pobox.com>
To: Paul Tan <pyokagan@gmail.com>
Cc: git@vger.kernel.org, Stefan Beller <sbeller@google.com>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 5/6] am --abort: support aborting to unborn branch
Date: Mon, 08 Jun 2015 13:10:41 -0700 [thread overview]
Message-ID: <xmqq8ubu9d1a.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1433591172-27077-6-git-send-email-pyokagan@gmail.com> (Paul Tan's message of "Sat, 6 Jun 2015 19:46:11 +0800")
Paul Tan <pyokagan@gmail.com> writes:
> When git-am is first run on an unborn branch, no ORIG_HEAD is created.
> As such, any applied commits will remain even after a git am --abort.
I think this answered my question on 4/6; that may indicate that
these two are either done in a wrong order or perhaps should be a
single change.
>
> To be consistent with the behavior of git am --abort when it is not run
> from an unborn branch, we empty the index, and then destroy the branch
> pointed to by HEAD if there is no ORIG_HEAD.
>
> Signed-off-by: Paul Tan <pyokagan@gmail.com>
> ---
> git-am.sh | 9 ++++++++-
> t/t4151-am-abort.sh | 17 +++++++++++++++++
> 2 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/git-am.sh b/git-am.sh
> index e4fe3ed..95f90a0 100755
> --- a/git-am.sh
> +++ b/git-am.sh
> @@ -524,7 +524,14 @@ then
> index_tree=$(git write-tree) &&
> orig_head=$(git rev-parse --verify -q ORIG_HEAD || echo $empty_tree) &&
> git read-tree -m -u $index_tree $orig_head
> - git reset ORIG_HEAD
> + if git rev-parse --verify -q ORIG_HEAD >/dev/null 2>&1
> + then
> + git reset ORIG_HEAD
> + else
> + git read-tree $empty_tree
> + curr_branch=$(git symbolic-ref HEAD 2>/dev/null) &&
> + git update-ref -d $curr_branch
> + fi
> fi
> rm -fr "$dotest"
> exit ;;
> diff --git a/t/t4151-am-abort.sh b/t/t4151-am-abort.sh
> index 2366042..b2a7fc5 100755
> --- a/t/t4151-am-abort.sh
> +++ b/t/t4151-am-abort.sh
> @@ -14,6 +14,7 @@ test_expect_success setup '
> git add file-1 file-2 &&
> git commit -m initial &&
> git tag initial &&
> + git format-patch --stdout --root initial >initial.patch &&
> for i in 2 3 4 5 6
> do
> echo $i >>file-1 &&
> @@ -125,4 +126,20 @@ test_expect_success 'am -3 --abort removes otherfile-4 on unborn branch' '
> test_path_is_missing otherfile-4
> '
>
> +test_expect_success 'am -3 --abort on unborn branch removes applied commits' '
> + git checkout -f --orphan orphan &&
> + git reset &&
> + rm -f otherfile-4 otherfile-2 file-1 file-2 &&
> + test_must_fail git am -3 initial.patch 0003-*.patch &&
> + test 3 -eq $(git ls-files -u | wc -l) &&
> + test 4 = "$(cat otherfile-4)" &&
> + git am --abort &&
> + test -z "$(git ls-files -u)" &&
> + test_path_is_missing otherfile-4 &&
> + test_path_is_missing file-1 &&
> + test_path_is_missing file-2 &&
> + test 0 -eq $(git log --oneline 2>/dev/null | wc -l) &&
> + test refs/heads/orphan = "$(git symbolic-ref HEAD)"
> +'
> +
> test_done
next prev parent reply other threads:[~2015-06-08 20:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-06 11:46 [PATCH 0/6] am --skip/--abort: improve index/worktree cleanup Paul Tan
2015-06-06 11:46 ` [PATCH 1/6] am --skip: revert changes introduced by failed 3way merge Paul Tan
2015-06-06 11:46 ` [PATCH 2/6] am -3: support 3way merge on unborn branch Paul Tan
2015-06-06 11:46 ` [PATCH 3/6] am --skip: support skipping while " Paul Tan
2015-06-06 11:46 ` [PATCH 4/6] am --abort: revert changes introduced by failed 3way merge Paul Tan
2015-06-08 20:09 ` Junio C Hamano
2015-06-06 11:46 ` [PATCH 5/6] am --abort: support aborting to unborn branch Paul Tan
2015-06-08 20:10 ` Junio C Hamano [this message]
2015-06-09 9:18 ` Paul Tan
2015-06-06 11:46 ` [PATCH 6/6] am --abort: keep unrelated commits on " Paul Tan
2015-06-08 20:13 ` Junio C Hamano
2015-06-09 8:54 ` Paul Tan
2015-06-08 17:04 ` [PATCH 0/6] am --skip/--abort: improve index/worktree cleanup Stefan Beller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq8ubu9d1a.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=johannes.schindelin@gmx.de \
--cc=pyokagan@gmail.com \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.