summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2016-06-12 10:54:02 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-06-13 21:38:16 (GMT)
commit41da7111f2c825ee0dcd319ec246a84b5ca0fd21 (patch)
tree958e18cd733ee3f9febdcb7f2baf38bbae92affb /refs.c
parent6d43a0cefd769c650bd114f41434ef5a7aa998e7 (diff)
downloadgit-41da7111f2c825ee0dcd319ec246a84b5ca0fd21.zip
git-41da7111f2c825ee0dcd319ec246a84b5ca0fd21.tar.gz
git-41da7111f2c825ee0dcd319ec246a84b5ca0fd21.tar.bz2
refs: add expand_ref()
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r--refs.c8
1 files changed, 7 insertions, 1 deletions
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;
}