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:
		
							
								
								
									
										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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shawn O. Pearce
					Shawn O. Pearce