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

[PATCH v3 18/25] refs: add expand_ref()

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Feb 23, 2016, 13:44 UTC
Message-ID
<1456235103-26317-19-git-send-email-pclouds@gmail.com>
In-Reply-To
<1456235103-26317-1-git-send-email-pclouds@gmail.com>

This is basically dwim_ref() without @{} support. To be used on the server side where we want to expand abbreviated to full ref names and nothing else. The first user is "git clone/fetch --shallow-exclude".

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 refs.c | 8 +++++++-
 refs.h | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/refs.c b/refs.c
index e2d34b2..842e4d8 100644
--- a/refs.c
+++ b/refs.c
@@ -392,6 +392,13 @@ static char *substitute_branch_name(const char **string, int *len)
 int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref)
 {
 	char *last_branch = substitute_branch_name(&str, &len);
+	int   refs_found  = expand_ref(str, len, sha1, ref);
+	free(last_branch);
+	return refs_found;
+}
+
+int expand_ref(const char *str, int len, unsigned char *sha1, char **ref)
+{
 	const char **p, *r;
 	int refs_found = 0;
 
@@ -417,7 +424,6 @@ int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref)
 			warning("ignoring broken ref %s.", fullref);
 		}
 	}
-	free(last_branch);
 	return refs_found;
 }
 
diff --git a/refs.h b/refs.h
index 3c3da29..31a2fa6 100644
--- a/refs.h
+++ b/refs.h
@@ -90,6 +90,7 @@ extern int resolve_gitlink_ref(const char *path, const char *refname, unsigned c
  */
 extern int refname_match(const char *abbrev_name, const char *full_name);
 
+extern int expand_ref(const char *str, int len, unsigned char *sha1, char **ref);
 extern int dwim_ref(const char *str, int len, unsigned char *sha1, char **ref);
 extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);
 
-- 
2.7.1.532.gd9e3aaa
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 19 of 26 in “More flexibility in making shallow clones”
  1. 00/25 More flexibility in making shallow clonesNguyễn Thái Ngọc Duy, Feb 23, 2016
  2. 01/25 remote-curl.c: convert fetch_git() to use argv_arrayNguyễn Thái Ngọc Duy, Feb 23, 2016
  3. 02/25 transport-helper.c: refactor set_helper_option()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  4. 03/25 upload-pack: move shallow deepen code out of receive_needs()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  5. 04/25 upload-pack: move "shallow" sending code out of deepen()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  6. 05/25 upload-pack: remove unused variable "backup"Nguyễn Thái Ngọc Duy, Feb 23, 2016
  7. 06/25 upload-pack: move "unshallow" sending code out of deepen()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  8. 07/25 upload-pack: use skip_prefix() instead of starts_with()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  9. 08/25 upload-pack: tighten number parsing at "deepen" linesNguyễn Thái Ngọc Duy, Feb 23, 2016
  10. 09/25 upload-pack: move rev-list code out of check_non_tip()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  11. 10/25 fetch-pack: use skip_prefix() instead of starts_with()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  12. 11/25 fetch-pack: use a common function for verbose printingNguyễn Thái Ngọc Duy, Feb 23, 2016
  13. 12/25 fetch-pack: use a separate flag for fetch in deepening modeNguyễn Thái Ngọc Duy, Feb 23, 2016
  14. 13/25 shallow.c: implement a generic shallow boundary finder based on rev-listNguyễn Thái Ngọc Duy, Feb 23, 2016
  15. 14/25 upload-pack: add deepen-since to cut shallow repos based on timeNguyễn Thái Ngọc Duy, Feb 23, 2016
  16. 15/25 fetch: define shallow boundary with --shallow-sinceNguyễn Thái Ngọc Duy, Feb 23, 2016
  17. 16/25 clone: define shallow clone boundary based on time with --shallow-sinceNguyễn Thái Ngọc Duy, Feb 23, 2016
  18. 17/25 t5500, t5539: tests for shallow depth since a specific dateNguyễn Thái Ngọc Duy, Feb 23, 2016
  19. 18/25 refs: add expand_ref()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  20. 19/25 upload-pack: support define shallow boundary by excluding revisionsNguyễn Thái Ngọc Duy, Feb 23, 2016
  21. 20/25 fetch: define shallow boundary with --shallow-excludeNguyễn Thái Ngọc Duy, Feb 23, 2016
  22. 21/25 clone: define shallow clone boundary with --shallow-excludeNguyễn Thái Ngọc Duy, Feb 23, 2016
  23. 22/25 t5500, t5539: tests for shallow depth excluding a refNguyễn Thái Ngọc Duy, Feb 23, 2016
  24. 23/25 upload-pack: split check_unreachable() in two, prep for get_reachable_list()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  25. 24/25 upload-pack: add get_reachable_list()Nguyễn Thái Ngọc Duy, Feb 23, 2016
  26. 25/25 fetch, upload-pack: --deepen=N extends shallow boundary by N commitsNguyễn Thái Ngọc Duy, Feb 23, 2016

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.