Skip to content

Commit

Permalink
for-each-ref: introduce %(HEAD) asterisk marker
Browse files Browse the repository at this point in the history
'git branch' shows which branch you are currently on with an '*', but
'git for-each-ref' misses this feature.  So, extend its format with
%(HEAD) for the same effect.

Now you can use the following format in for-each-ref:

  %(HEAD) %(refname:short)

to display an asterisk next to the current ref.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Ramkumar Ramachandra authored and Junio C Hamano committed Nov 18, 2013
1 parent 189a546 commit 7a48b83
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
4 changes: 4 additions & 0 deletions Documentation/git-for-each-ref.txt
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,10 @@ upstream::
from the displayed ref. Respects `:short` in the same way as
`refname` above.

HEAD::
'*' if HEAD matches current ref (the checked out branch), ' '
otherwise.

In addition to the above, for commit and tag objects, the header
field names (`tree`, `parent`, `object`, `type`, and `tag`) can
be used to specify the value in the header field.
Expand Down
13 changes: 11 additions & 2 deletions builtin/for-each-ref.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ static struct {
{ "upstream" },
{ "symref" },
{ "flag" },
{ "HEAD" },
};

/*
Expand Down Expand Up @@ -675,8 +676,16 @@ static void populate_value(struct refinfo *ref)
v->s = xstrdup(buf + 1);
}
continue;
}
else
} else if (!strcmp(name, "HEAD")) {
const char *head;
unsigned char sha1[20];
head = resolve_ref_unsafe("HEAD", sha1, 1, NULL);
if (!strcmp(ref->refname, head))
v->s = "*";
else
v->s = " ";
continue;
} else
continue;

formatp = strchr(name, ':');
Expand Down
2 changes: 2 additions & 0 deletions t/t6300-for-each-ref.sh
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ test_atom head contents:body ''
test_atom head contents:signature ''
test_atom head contents 'Initial
'
test_atom head HEAD '*'

test_atom tag refname refs/tags/testtag
test_atom tag upstream ''
Expand Down Expand Up @@ -110,6 +111,7 @@ test_atom tag contents:body ''
test_atom tag contents:signature ''
test_atom tag contents 'Tagging at 1151939927
'
test_atom tag HEAD ' '

test_expect_success 'Check invalid atoms names are errors' '
test_must_fail git for-each-ref --format="%(INVALID)" refs/heads
Expand Down

0 comments on commit 7a48b83

Please sign in to comment.