From 311e02a4a5c7b82c996214f06d58e2b51b3ecc22 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 5 Jul 2007 19:19:37 -0400 Subject: 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 --- git-gui.sh | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'git-gui.sh') 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 -- cgit v1.2.3