git-gui: Created Branch menu.
This is an early start at branch management from within git-gui. The branch menu has create/delete command entries to create and delete branches as well as a list of radiobutton entries for each branch found in the repository through for-each-ref. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>maint
							parent
							
								
									9342e26d3a
								
							
						
					
					
						commit
						700a65ce38
					
				
							
								
								
									
										61
									
								
								git-gui
								
								
								
								
							
							
						
						
									
										61
									
								
								git-gui
								
								
								
								
							|  | @ -1605,6 +1605,44 @@ proc write_checkout_index {fd pathList totalCnt batch msg after} { | |||
| 		[expr {100.0 * $update_index_cp / $totalCnt}]] | ||||
| } | ||||
|  | ||||
| ###################################################################### | ||||
| ## | ||||
| ## branch management | ||||
|  | ||||
| proc load_all_branches {} { | ||||
| 	global all_branches | ||||
|  | ||||
| 	set all_branches [list] | ||||
| 	set cmd [list git for-each-ref] | ||||
| 	lappend cmd --format=%(refname) | ||||
| 	lappend cmd refs/heads | ||||
| 	set fd [open "| $cmd" r] | ||||
| 	while {[gets $fd line] > 0} { | ||||
| 		if {[regsub ^refs/heads/ $line {} line]} { | ||||
| 			lappend all_branches $line | ||||
| 		} | ||||
| 	} | ||||
| 	close $fd | ||||
|  | ||||
| 	set all_branches [lsort $all_branches] | ||||
| } | ||||
|  | ||||
| proc populate_branch_menu {m} { | ||||
| 	global all_branches disable_on_lock | ||||
|  | ||||
| 	$m add separator | ||||
| 	foreach b $all_branches { | ||||
| 		$m add radiobutton \ | ||||
| 			-label $b \ | ||||
| 			-command [list do_switch_branch $b] \ | ||||
| 			-variable current_branch \ | ||||
| 			-value $b \ | ||||
| 			-font font_ui | ||||
| 		lappend disable_on_lock \ | ||||
| 			[list $m entryconf [$m index last] -state] | ||||
| 	} | ||||
| } | ||||
|  | ||||
| ###################################################################### | ||||
| ## | ||||
| ## remote management | ||||
|  | @ -2878,6 +2916,9 @@ apply_config | |||
| menu .mbar -tearoff 0 | ||||
| .mbar add cascade -label Repository -menu .mbar.repository | ||||
| .mbar add cascade -label Edit -menu .mbar.edit | ||||
| if {!$single_commit} { | ||||
| 	.mbar add cascade -label Branch -menu .mbar.branch | ||||
| } | ||||
| .mbar add cascade -label Commit -menu .mbar.commit | ||||
| if {!$single_commit} { | ||||
| 	.mbar add cascade -label Fetch -menu .mbar.fetch | ||||
|  | @ -2963,6 +3004,24 @@ menu .mbar.edit | |||
| 	-accelerator $M1T-A \ | ||||
| 	-font font_ui | ||||
|  | ||||
| if {!$single_commit} { | ||||
| 	# -- Branch Menu | ||||
| 	# | ||||
| 	menu .mbar.branch | ||||
|  | ||||
| 	.mbar.branch add command -label {Create...} \ | ||||
| 		-command do_create_branch \ | ||||
| 		-font font_ui | ||||
| 	lappend disable_on_lock [list .mbar.branch entryconf \ | ||||
| 		[.mbar.branch index last] -state] | ||||
|  | ||||
| 	.mbar.branch add command -label {Delete...} \ | ||||
| 		-command do_delete_branch \ | ||||
| 		-font font_ui | ||||
| 	lappend disable_on_lock [list .mbar.branch entryconf \ | ||||
| 		[.mbar.branch index last] -state] | ||||
| } | ||||
|  | ||||
| # -- Commit Menu | ||||
| # | ||||
| menu .mbar.commit | ||||
|  | @ -3583,6 +3642,8 @@ user.email settings into your personal | |||
|  | ||||
| if {!$single_commit} { | ||||
| 	load_all_remotes | ||||
| 	load_all_branches | ||||
| 	populate_branch_menu .mbar.branch | ||||
| 	populate_fetch_menu .mbar.fetch | ||||
| 	populate_pull_menu .mbar.pull | ||||
| 	populate_push_menu .mbar.push | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Shawn O. Pearce
						Shawn O. Pearce