From 9608a190c0344a55b1d106c1cca17b17fe276c86 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 7 Jul 2013 14:13:41 -0700 Subject: [PATCH] name-ref: factor out name shortening logic from name_ref() The logic will be used in a new codepath for showing exact matches. Signed-off-by: Junio C Hamano --- builtin/name-rev.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/builtin/name-rev.c b/builtin/name-rev.c index 87d485496f..1234ebb5d8 100644 --- a/builtin/name-rev.c +++ b/builtin/name-rev.c @@ -96,6 +96,17 @@ static int subpath_matches(const char *path, const char *filter) return -1; } +static const char *name_ref_abbrev(const char *refname, int shorten_unambiguous) +{ + if (shorten_unambiguous) + refname = shorten_unambiguous_ref(refname, 0); + else if (!prefixcmp(refname, "refs/heads/")) + refname = refname + 11; + else if (!prefixcmp(refname, "refs/")) + refname = refname + 5; + return refname; +} + struct name_ref_data { int tags_only; int name_only; @@ -134,13 +145,7 @@ static int name_ref(const char *path, const unsigned char *sha1, int flags, void if (o && o->type == OBJ_COMMIT) { struct commit *commit = (struct commit *)o; - if (can_abbreviate_output) - path = shorten_unambiguous_ref(path, 0); - else if (!prefixcmp(path, "refs/heads/")) - path = path + 11; - else if (!prefixcmp(path, "refs/")) - path = path + 5; - + path = name_ref_abbrev(path, can_abbreviate_output); name_rev(commit, xstrdup(path), 0, 0, deref); } return 0; -- 2.11.4.GIT