diff options
-rwxr-xr-x | git-gui.sh | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/git-gui.sh b/git-gui.sh index 99df2d9480..516bd972ec 100755 --- a/git-gui.sh +++ b/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 |