git-gui: Display the current branch.

Users want to know what branch they are sitting on before making a commit,
as they may need to switch to a different branch first.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
diff --git a/git-gui b/git-gui
index 34a1daa..dd2d750 100755
--- a/git-gui
+++ b/git-gui
@@ -258,11 +258,20 @@
 ## status
 
 proc repository_state {ctvar hdvar mhvar} {
-	global gitdir
+	global gitdir current_branch
 	upvar $ctvar ct $hdvar hd $mhvar mh
 
 	set mh [list]
 
+	if {[catch {set current_branch [exec git symbolic-ref HEAD]}]} {
+		set current_branch {}
+	} else {
+		regsub ^refs/(heads|tags)/ \
+			$current_branch \
+			{} \
+			current_branch
+	}
+
 	if {[catch {set hd [exec git rev-parse --verify HEAD]}]} {
 		set hd {}
 		set ct initial
@@ -3060,6 +3069,25 @@
 }
 
 
+# -- Branch Control
+#
+frame .branch \
+	-borderwidth 1 \
+	-relief sunken
+label .branch.l1 \
+	-text {Current Branch:} \
+	-anchor w \
+	-justify left \
+	-font font_ui
+label .branch.cb \
+	-textvariable current_branch \
+	-anchor w \
+	-justify left \
+	-font font_ui
+pack .branch.l1 -side left
+pack .branch.cb -side left -fill x
+pack .branch -side top -fill x
+
 # -- Main Window Layout
 #
 panedwindow .vpane -orient vertical
@@ -3486,6 +3514,7 @@
 set MERGE_HEAD [list]
 set commit_type {}
 set empty_tree {}
+set current_branch {}
 set current_diff {}
 set selected_commit_type new