From: Philip Oakley Date: Fri, 24 May 2013 20:28:46 GMT Subject: Re: [PATCH 2/3] for-each-ref: introduce %(HEAD) marker Message-ID: <2314A6D4A97C4D44AFEF62B9D089BDC3@PhilipOakley> In-Reply-To: <1369405177-7855-3-git-send-email-artagnon@gmail.com> From: "Ramkumar Ramachandra" Sent: Friday, May 24, 2013 3:19 PM > 'git branch' shows which branch you are currently on with an '*', but > 'git for-each-ref' misses this feature. So, extend the format with > %(HEAD) to do exactly the same thing. Maybe 'isHEAD' as a better name, or 'ifHEAD', or something to indicate its boolean nature. > > Now you can use the following format in for-each-ref: > > %C(red)%(HEAD)%C(reset) %C(green)%(refname:short)%C(reset) > > to display a red asterisk next to the current ref. > > Signed-off-by: Ramkumar Ramachandra > --- > builtin/for-each-ref.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c > index 1563b25..63d3a85 100644 > --- a/builtin/for-each-ref.c > +++ b/builtin/for-each-ref.c > @@ -76,6 +76,7 @@ static struct { > { "upstream" }, > { "symref" }, > { "flag" }, > + { "HEAD" }, > }; > > /* > @@ -683,8 +684,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, ':'); > -- > 1.8.3.rc3.2.g99b8f3f.dirty