summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-01-18 15:12:14 -0800
committerJunio C Hamano <gitster@pobox.com>2017-01-18 15:12:14 -0800
commitb85f79c7dd35b495ce94bf58b61832c6030751cf (patch)
tree5b8673406674992c4aea4336b023af663e30c433
parent5c924692cd1c45e9c1281516e9823f7c5c3c7cd8 (diff)
parentb10731f43dc21fa47c275052e7c074c686335cd3 (diff)
downloadgit-b85f79c7dd35b495ce94bf58b61832c6030751cf.tar.gz
Merge branch 'km/branch-get-push-while-detached'
"git <cmd> @{push}" on a detached HEAD used to segfault; it has been corrected to error out with a message. * km/branch-get-push-while-detached: branch_get_push: do not segfault when HEAD is detached
-rw-r--r--remote.c6
-rwxr-xr-xt/t1514-rev-parse-push.sh6
2 files changed, 9 insertions, 3 deletions
diff --git a/remote.c b/remote.c
index ad6c5424ed..d5eaec7374 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);
return branch->push_tracking_ref;
diff --git a/t/t1514-rev-parse-push.sh b/t/t1514-rev-parse-push.sh
index 7214f5b33f..623a32aa6e 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^0 &&
+ test_when_finished "git checkout -" &&
+ test_must_fail git rev-parse @{push}
+'
+
test_done