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

[PATCH 7/7] sha1_name: implement finding @{push}

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
May 23, 2013, 15:12 UTC
Message-ID
<1369321970-7759-8-git-send-email-artagnon@gmail.com>
In-Reply-To
<1369321970-7759-1-git-send-email-artagnon@gmail.com>

Try this now: configure your current branch's pushremote to push to "refs/heads/*:refs/heads/rr/*". Now, type 'git show @{p}'. Voila!

It currently only works when:
1. remote.<name>.push is explicitly specified.
2. There is a pattern to match (*).
Proof-of-concept only.
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 sha1_name.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
diff --git a/sha1_name.c b/sha1_name.c
index 5f6958b..283d538 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -1008,6 +1008,24 @@ static void die_no_upstream(struct branch *upstream, char *name) {
 	}
 }
 
+static void find_push_ref(struct branch *branch) {
+	struct remote *remote = pushremote_get(NULL);
+	const struct refspec *pat = NULL;
+	char raw_ref[PATH_MAX];
+	struct ref *this_ref;
+	char *dst_name;
+	int len;
+
+	sprintf(raw_ref, "refs/heads/%s", branch->name);
+	len = strlen(raw_ref) + 1;
+	this_ref = xcalloc(1, sizeof(*this_ref) + len);
+	memcpy(this_ref->name, raw_ref, len);
+
+	dst_name = get_ref_match(remote->push, remote->push_refspec_nr,
+				this_ref, MATCH_REFS_ALL, 0, &pat);
+	printf("dst_name = %s\n", dst_name);
+}
+
 /*
  * This reads short-hand syntax that not only evaluates to a commit
  * object name, but also can act as if the end user spelled the name
@@ -1085,6 +1103,8 @@ int interpret_branch_name(const char *name, struct strbuf *buf)
 		cp = shorten_unambiguous_ref(branch->merge[0]->dst, 0);
 		break;
 	case AT_KIND_PUSH:
+		find_push_ref(branch);
+		die("Done!");
 		break;
 	}
 
-- 
1.8.3.rc3.17.gd95ec6c.dirty
Previous: Ramkumar RamachandraNext: Duy Nguyen
Message 10 of 17 in “Let's get that @{push}!”
  1. 0/7 Let's get that @{push}!Ramkumar Ramachandra, May 23, 2013
  2. 1/7 sha1_name: abstract upstream_mark() logicRamkumar Ramachandra, May 23, 2013
  3. 2/7 sha1_name: factor out die_no_upstream()Ramkumar Ramachandra, May 23, 2013
  4. 3/7 sha1_name: remove upstream_mark()Ramkumar Ramachandra, May 23, 2013
  5. 4/7 remote: expose parse_push_refspec()Ramkumar Ramachandra, May 23, 2013
  6. 5/7 remote: expose get_ref_match()Ramkumar Ramachandra, May 23, 2013
  7. 6/7 sha1_name: prepare to introduce AT_KIND_PUSHRamkumar Ramachandra, May 23, 2013
  8. Felipe ContrerasMay 24, 2013
  9. Ramkumar RamachandraMay 24, 2013
  10. 7/7 sha1_name: implement finding @{push}Ramkumar Ramachandra, May 23, 2013
  11. Duy NguyenMay 24, 2013
  12. Ramkumar RamachandraMay 24, 2013
  13. Duy NguyenMay 24, 2013
  14. Ramkumar RamachandraMay 24, 2013
  15. Junio C HamanoMay 24, 2013
  16. Ramkumar RamachandraMay 24, 2013
  17. Junio C HamanoMay 24, 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.