]> git.ipfire.org Git - thirdparty/git.git/commit - log-tree.c
log: decorate HEAD with branch name under --decorate=full, too
authorJunio C Hamano <gitster@pobox.com>
Wed, 13 May 2015 17:25:18 +0000 (10:25 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 May 2015 17:25:18 +0000 (10:25 -0700)
commit76c61fbdbab6241af5b229a314946714fdc45908
treee2340897172eff35cb6e49f58d110bab5609ca69
parent51ff0f27bc6bfe83da7304ef9db77f3a2a4a47b0
log: decorate HEAD with branch name under --decorate=full, too

The previous step to teach "log --decorate" to show "HEAD -> master"
instead of "HEAD, master" when showing the commit at the tip of the
'master' branch, when the 'master' branch is checked out, did not
work for "log --decorate=full".

The commands in the "log" family prepare commit decorations for all
refs upfront, and the actual string used in a decoration depends on
how load_ref_decorations() is called very early in the process.  By
default, "git log --decorate" stores names with common prefixes such
as "refs/heads" stripped; "git log --decorate=full" stores the full
refnames.

When the current_pointed_by_HEAD() function has to decide if "HEAD"
points at the branch a decoration describes, however, what was
passed to load_ref_decorations() to decide to strip (or keep) such a
common prefix is long lost.  This makes it impossible to reliably
tell if a decoration that stores "refs/heads/master", for example,
is the 'master' branch (under "--decorate" with prefix omitted) or
'refs/heads/master' branch (under "--decorate=full").

Keep what was passed to load_ref_decorations() in a global next to
the global variable name_decoration, and use that to decide how to
match what was read from "HEAD" and what is in a decoration.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
log-tree.c
t/t4013/diff.log_--decorate=full_--all