Skip to content

Commit

Permalink
name-ref: factor out name shortening logic from name_ref()
Browse files Browse the repository at this point in the history
The logic will be used in a new codepath for showing exact matches.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Jul 7, 2013
1 parent 96ffd4c commit 9608a19
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions builtin/name-rev.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 9608a19

Please sign in to comment.