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

[PATCH 1/3] upload-pack: send the HEAD information

From
Andreas Krey <a.krey@gmx.de>
Date
Sep 6, 2013, 15:56 UTC
Message-ID
<20130906155608.GF12966@inner.h.apk.li>
In-Reply-To
<20130906155204.GE12966@inner.h.apk.li>
From: Junio C Hamano <gitster@pobox.com>

This implements the server side of protocol extension to show which branch the HEAD points at. The information is sent as a capability symref=<target>.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Andreas Krey <a.krey@gmx.de>
---
 upload-pack.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/upload-pack.c b/upload-pack.c
index 127e59a..390d1ec 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -745,13 +745,17 @@ static int send_ref(const char *refname, const unsigned char *sha1, int flag, vo
 	if (mark_our_ref(refname, sha1, flag, cb_data))
 		return 0;
 
-	if (capabilities)
-		packet_write(1, "%s %s%c%s%s%s agent=%s\n",
+	if (capabilities) {
+		unsigned char dummy[20];
+		const char *target = resolve_ref_unsafe("HEAD", dummy, 0, NULL);
+		packet_write(1, "%s %s%c%s%s%s%s%s agent=%s\n",
 			     sha1_to_hex(sha1), refname_nons,
 			     0, capabilities,
 			     allow_tip_sha1_in_want ? " allow-tip-sha1-in-want" : "",
 			     stateless_rpc ? " no-done" : "",
+			     target ? " symref=" : "", target ? target : 0,
 			     git_user_agent_sanitized());
+	}
 	else
 		packet_write(1, "%s %s\n", sha1_to_hex(sha1), refname_nons);
 	capabilities = NULL;
-- 
1.8.3.1.485.g9704416.dirty
Previous: Andreas KreyNext: Junio C Hamano
Message 2 of 32 in “Unconfuse git clone when two branches at are HEAD.”
  1. 0/3 Unconfuse git clone when two branches at are HEAD.Andreas Krey, Sep 6, 2013
  2. 1/3 upload-pack: send the HEAD informationAndreas Krey, Sep 6, 2013
  3. Junio C HamanoSep 6, 2013
  4. Andreas KreySep 6, 2013
  5. Junio C HamanoSep 6, 2013
  6. Jeff KingSep 8, 2013
  7. Jeff KingSep 8, 2013
  8. Junio C HamanoSep 8, 2013
  9. 0/6 Removing the guesswork of HEAD in "clone"Junio C Hamano, Sep 18, 2013
  10. 1/6 upload-pack.c: do not pass confusing cb_data to mark_our_ref()Junio C Hamano, Sep 18, 2013
  11. 2/6 upload-pack: send symbolic ref information as capabilityJunio C Hamano, Sep 18, 2013
  12. Junio C HamanoSep 18, 2013
  13. 3/6 upload-pack: send non-HEAD symbolic refsJunio C Hamano, Sep 18, 2013
  14. 4/6 connect.c: make parse_feature_value() staticJunio C Hamano, Sep 18, 2013
  15. 5/6 connect: annotate refs with their symref information in get_remote_head()Junio C Hamano, Sep 18, 2013
  16. 6/6 clone: test the new HEAD detection logicJunio C Hamano, Sep 18, 2013
  17. 2/3 connect.c: save symref info from server capabilitiesAndreas Krey, Sep 6, 2013
  18. Junio C HamanoSep 6, 2013
  19. Andreas KreySep 6, 2013
  20. Junio C HamanoSep 6, 2013
  21. 3/3 clone: test the new HEAD detection logicAndreas Krey, Sep 6, 2013
  22. Philip OakleySep 6, 2013
  23. Junio C HamanoSep 6, 2013
  24. Philip OakleySep 6, 2013
  25. Junio C HamanoSep 7, 2013
  26. Philip OakleySep 7, 2013
  27. Junio C HamanoSep 8, 2013
  28. Philip OakleySep 8, 2013
  29. Junio C HamanoSep 9, 2013
  30. Andreas KreySep 9, 2013
  31. Philip OakleySep 9, 2013
  32. Junio C HamanoSep 9, 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.