git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] push: make push.default = current use resolved HEAD

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
May 29, 2013, 19:21 UTC
Message-ID
<1369855311-23367-4-git-send-email-artagnon@gmail.com>
In-Reply-To
<1369855311-23367-1-git-send-email-artagnon@gmail.com>

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>
---
 builtin/push.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/builtin/push.c b/builtin/push.c
index a79038c..d819487 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -198,7 +198,7 @@ static void setup_default_push_refspecs(struct remote *remote)
 	case PUSH_DEFAULT_CURRENT:
 		if (!branch)
 			die(_(message_detached_head_die), remote->name);
-		add_refspec("HEAD");
+		add_refspec(branch->name);
 		break;
 
 	case PUSH_DEFAULT_NOTHING:
-- 
1.8.3.12.gbd56588
Previous: Ramkumar Ramachandra
Message 8 of 8 in “Early HEAD resolution in push.default = current”
  1. 0/3 Early HEAD resolution in push.default = currentRamkumar Ramachandra, May 29, 2013
  2. 1/3 push: factor out the detached HEAD error messageRamkumar Ramachandra, May 29, 2013
  3. 2/3 push: fail early with detached HEAD and currentRamkumar Ramachandra, May 29, 2013
  4. Junio C HamanoMay 29, 2013
  5. Ramkumar RamachandraMay 29, 2013
  6. Junio C HamanoMay 29, 2013
  7. Ramkumar RamachandraMay 29, 2013
  8. 3/3 push: make push.default = current use resolved HEADRamkumar Ramachandra, May 29, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.