summaryrefslogtreecommitdiff
path: root/builtin/push.c
diff options
context:
space:
mode:
authorRamkumar Ramachandra <artagnon@gmail.com>2013-05-29 19:21:51 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-05-29 22:34:07 (GMT)
commit0f075b220862e729eb3873a1c1496b923d17c2d4 (patch)
tree90d4ab00ca754ec4108d57e5ddbfde21f1804088 /builtin/push.c
parent7b2ecd81084adeba701c60da81eec6be478910b8 (diff)
downloadgit-0f075b220862e729eb3873a1c1496b923d17c2d4.zip
git-0f075b220862e729eb3873a1c1496b923d17c2d4.tar.gz
git-0f075b220862e729eb3873a1c1496b923d17c2d4.tar.bz2
push: make push.default = current use resolved HEAD
With this change, the output of the push (with push.default set to current) changes subtly from: $ git push ... * [new branch] HEAD -> push-current-head to: $ git push ... * [new branch] push-current-head -> push-current-head This patch was written with a different motivation. There is a problem unique to push.default = current: # on branch push-current-head $ git push # on another terminal $ git checkout master # return to the first terminal # the push tried to push master! This happens because the 'git checkout' on the second terminal races with the 'git push' on the first terminal. Although this patch does not solve the core problem (there is still no guarantee that 'git push' on the first terminal will resolve HEAD before 'git checkout' changes HEAD on the second), it works in practice. Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/push.c')
-rw-r--r--builtin/push.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/push.c b/builtin/push.c
index ba2bd56..2d84d10 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -199,7 +199,7 @@ static void setup_default_push_refspecs(struct remote *remote)
branch = branch_get(NULL);
if (!branch)
die(_(message_detached_head_die), remote->name);
- add_refspec("HEAD");
+ add_refspec(branch->name);
break;
case PUSH_DEFAULT_NOTHING: