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>
This commit is contained in:
parent
ba1964be26
commit
311e02a4a5
18
git-gui.sh
18
git-gui.sh
@ -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…
Reference in New Issue
Block a user