diff options
author | Johannes Sixt <johannes.sixt@telecom.at> | 2008-05-23 16:13:05 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-05-23 15:52:20 -0700 |
commit | e00f3790b88ce61f1bdc863011a122b98b43197e (patch) | |
tree | 6809a130203b95cc36516bf8b2c9dd2bababf4c4 /builtin-rev-parse.c | |
parent | e77b0b5d0fdac411607dbae11ccad87dccd332d3 (diff) | |
download | git-e00f3790b88ce61f1bdc863011a122b98b43197e.tar.gz git-e00f3790b88ce61f1bdc863011a122b98b43197e.tar.xz |
rev-parse --symbolic-full-name: don't print '^' if SHA1 is not a ref
The intention of --symbolic-full-name is to not print anything if a
revision is not an exact ref. But this command:
$ git-rev-parse --symbolic-full-name --not master~1
still emitted a sole '^' to stdout (provided that there's no other ref at
master~1). This fixes it.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-rev-parse.c')
-rw-r--r-- | builtin-rev-parse.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c index 90dbb9d7c..1ae086ad1 100644 --- a/builtin-rev-parse.c +++ b/builtin-rev-parse.c @@ -96,6 +96,14 @@ static void show(const char *arg) puts(arg); } +/* Like show(), but with a negation prefix according to type */ +static void show_with_type(int type, const char *arg) +{ + if (type != show_type) + putchar('^'); + show(arg); +} + /* Output a revision, only if filter allows it */ static void show_rev(int type, const unsigned char *sha1, const char *name) { @@ -104,8 +112,6 @@ static void show_rev(int type, const unsigned char *sha1, const char *name) def = NULL; revs_count++; - if (type != show_type) - putchar('^'); if (symbolic && name) { if (symbolic == SHOW_SYMBOLIC_FULL) { unsigned char discard[20]; @@ -122,20 +128,20 @@ static void show_rev(int type, const unsigned char *sha1, const char *name) */ break; case 1: /* happy */ - show(full); + show_with_type(type, full); break; default: /* ambiguous */ error("refname '%s' is ambiguous", name); break; } } else { - show(name); + show_with_type(type, name); } } else if (abbrev) - show(find_unique_abbrev(sha1, abbrev)); + show_with_type(type, find_unique_abbrev(sha1, abbrev)); else - show(sha1_to_hex(sha1)); + show_with_type(type, sha1_to_hex(sha1)); } /* Output a flag, only if filter allows it. */ |