Browse Source

git-gui: Better handling of detached HEAD

If the current branch is not a symbolic-ref that points to a
name in the refs/heads/ namespace we now just assume that the
head is a detached head.  In this case we return the special
branch name of HEAD rather than empty string, as HEAD is a
valid revision specification and the empty string is not.

I have also slightly improved the current-branch function by
using string functions to parse the symbolic-ref data.  This
should be slightly faster than using a regsub.  I think the
code is clearer too.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Shawn O. Pearce 18 years ago
parent
commit
311e02a4a5
  1. 18
      git-gui.sh

18
git-gui.sh

@ -285,14 +285,24 @@ proc git {args} { @@ -285,14 +285,24 @@ proc git {args} {
}

proc current-branch {} {
set ref {}
set fd [open [gitdir HEAD] r]
if {[gets $fd ref] <16
|| ![regsub {^ref: refs/heads/} $ref {} ref]} {
if {[gets $fd ref] < 1} {
set ref {}
}
close $fd
return $ref

set pfx {ref: refs/heads/}
set len [string length $pfx]
if {[string equal -length $len $pfx $ref]} {
# We're on a branch. It might not exist. But
# HEAD looks good enough to be a branch.
#
return [string range $ref $len end]
} else {
# Assume this is a detached head.
#
return HEAD
}
}

auto_load tk_optionMenu

Loading…
Cancel
Save