Signed-off-by: Rogier Goossens <goossens.rogier@xxxxxxxxx> --- gitk | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 84 insertions(+), 5 deletions(-) diff --git a/gitk b/gitk index 5f1255c..e9465fb 100755 --- a/gitk +++ b/gitk @@ -2665,6 +2665,7 @@ proc makewindow {} { makemenu $headctxmenu { {mc "Check out this branch" command cobranch} {mc "Remove this branch" command rmbranch} + {mc "Rename this branch" command mvbranch} {mc "Copy branch name" command {clipboard clear; clipboard append $headmenuhead}} } $headctxmenu configure -tearoff 0 @@ -9526,6 +9527,80 @@ proc mkbrgo {top} { } } +proc mvbranch {} { + global mvbrtop NS + global headmenuid headmenuhead + + set prevname $headmenuhead + set id $headmenuid + + set top .renamebranch + catch {destroy $top} + ttk_toplevel $top + make_transient $top . + ${NS}::label $top.title -text [mc "Rename branch %s" $prevname] + grid $top.title - -pady 10 + ${NS}::label $top.id -text [mc "ID:"] + ${NS}::entry $top.sha1 -width 40 + $top.sha1 insert 0 $id + $top.sha1 conf -state readonly + grid $top.id $top.sha1 -sticky w + ${NS}::label $top.nlab -text [mc "Name:"] + ${NS}::entry $top.name -width 40 + $top.name insert 0 $prevname + grid $top.nlab $top.name -sticky w + ${NS}::frame $top.buts + ${NS}::button $top.buts.go -text [mc "Rename"] -command [list mvbrgo $top $prevname] + ${NS}::button $top.buts.can -text [mc "Cancel"] -command "catch {destroy $top}" + bind $top <Key-Return> [list mvbrgo $top $prevname] + bind $top <Key-Escape> "catch {destroy $top}" + grid $top.buts.go $top.buts.can + grid columnconfigure $top.buts 0 -weight 1 -uniform a + grid columnconfigure $top.buts 1 -weight 1 -uniform a + grid $top.buts - -pady 10 -sticky ew + focus $top.name +} + +proc mvbrgo {top prevname} { + global headids idheads mainhead mainheadid + + set name [$top.name get] + set id [$top.sha1 get] + set cmdargs {} + if {$name eq $prevname} { + catch {destroy $top} + return + } + if {$name eq {}} { + error_popup [mc "Please specify a new name for the branch"] $top + return + } + catch {destroy $top} + lappend cmdargs -m $prevname $name + nowbusy renamebranch + update + if {[catch { + eval exec git branch $cmdargs + } err]} { + notbusy renamebranch + error_popup $err + } else { + notbusy renamebranch + removehead $id $prevname + removedhead $id $prevname + set headids($name) $id + lappend idheads($id) $name + addedhead $id $name + if {$prevname eq $mainhead} { + set mainhead $name + set mainheadid $id + } + redrawtags $id + dispneartags 0 + run refill_reflist + } +} + proc exec_citool {tool_args {baseid {}}} { global commitinfo env @@ -9756,15 +9831,19 @@ proc headmenu {x y id head} { stopfinding set headmenuid $id set headmenuhead $head - set state normal + array set state {0 normal 1 normal 2 normal 3 normal} if {[string match "remotes/*" $head]} { - set state disabled + set state(0) disabled + set state(1) disabled + set state(2) disabled } if {$head eq $mainhead} { - set state disabled + set state(0) disabled + set state(1) disabled + } + foreach i {0 1 2 3} { + $headctxmenu entryconfigure $i -state $state($i) } - $headctxmenu entryconfigure 0 -state $state - $headctxmenu entryconfigure 1 -state $state tk_popup $headctxmenu $x $y } -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html