From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Kyle Meyer <kyle@kyleam.com>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: [PATCH] branch_get_push: do not segfault when HEAD is detached
Date: Fri, 6 Jan 2017 14:41:42 +0100 (CET) [thread overview]
Message-ID: <alpine.DEB.2.20.1701061438300.3469@virtualbox> (raw)
In-Reply-To: <20170106045623.21118-1-kyle@kyleam.com>
Hi Kyle,
On Thu, 5 Jan 2017, Kyle Meyer wrote:
> Move the detached HEAD check from branch_get_push_1() to
> branch_get_push() to avoid setting branch->push_tracking_ref when
> branch is NULL.
>
> Signed-off-by: Kyle Meyer <kyle@kyleam.com>
Good point.
> diff --git a/remote.c b/remote.c
> index ad6c5424e..d5eaec737 100644
> --- a/remote.c
> +++ b/remote.c
> @@ -1716,9 +1716,6 @@ static const char *branch_get_push_1(struct branch *branch, struct strbuf *err)
> {
> struct remote *remote;
>
> - if (!branch)
> - return error_buf(err, _("HEAD does not point to a branch"));
> -
> remote = remote_get(pushremote_for_branch(branch, NULL));
> if (!remote)
> return error_buf(err,
> @@ -1778,6 +1775,9 @@ static const char *branch_get_push_1(struct branch *branch, struct strbuf *err)
>
> const char *branch_get_push(struct branch *branch, struct strbuf *err)
> {
> + if (!branch)
> + return error_buf(err, _("HEAD does not point to a branch"));
> +
> if (!branch->push_tracking_ref)
> branch->push_tracking_ref = branch_get_push_1(branch, err);
This is the only caller of branch_get_push_1(), so all is good.
> diff --git a/t/t1514-rev-parse-push.sh b/t/t1514-rev-parse-push.sh
> index 7214f5b33..90c639ae1 100755
> --- a/t/t1514-rev-parse-push.sh
> +++ b/t/t1514-rev-parse-push.sh
> @@ -60,4 +60,10 @@ test_expect_success '@{push} with push refspecs' '
> resolve topic@{push} refs/remotes/origin/magic/topic
> '
>
> +test_expect_success 'resolving @{push} fails with a detached HEAD' '
> + git checkout HEAD^{} &&
I seem to recall that we prefer HEAD^0 over HEAD^{} and the existing
scripts seem to agree with me:
$ git grep -c HEAD^0 junio/pu -- t/
junio/pu:t/t1450-fsck.sh:1
junio/pu:t/t1507-rev-parse-upstream.sh:2
junio/pu:t/t2020-checkout-detach.sh:5
junio/pu:t/t3200-branch.sh:1
junio/pu:t/t3203-branch-output.sh:3
junio/pu:t/t3400-rebase.sh:1
junio/pu:t/t3404-rebase-interactive.sh:1
junio/pu:t/t5407-post-rewrite-hook.sh:2
junio/pu:t/t5505-remote.sh:1
junio/pu:t/t5510-fetch.sh:1
junio/pu:t/t5533-push-cas.sh:3
junio/pu:t/t6035-merge-dir-to-symlink.sh:3
junio/pu:t/t7201-co.sh:2
junio/pu:t/t7402-submodule-rebase.sh:1
junio/pu:t/t9105-git-svn-commit-diff.sh:1
junio/pu:t/t9107-git-svn-migrate.sh:1
$ git grep -c HEAD^{} junio/pu -- t/
junio/pu:t/t3200-branch.sh:3
Maybe use HEAD^0 just for consistency?
Ciao,
Johannes
next prev parent reply other threads:[~2017-01-06 13:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-06 4:56 [PATCH] branch_get_push: do not segfault when HEAD is detached Kyle Meyer
2017-01-06 6:18 ` Jeff King
2017-01-06 13:41 ` Johannes Schindelin [this message]
2017-01-07 1:09 ` Kyle Meyer
2017-01-07 1:11 ` Jeff King
2017-01-07 1:19 ` Kyle Meyer
2017-01-07 1:31 ` Jeff King
2017-01-09 10:32 ` Junio C Hamano
2017-01-07 1:12 ` [PATCH v2] " Kyle Meyer
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=alpine.DEB.2.20.1701061438300.3469@virtualbox \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=kyle@kyleam.com \
--cc=peff@peff.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox