{"thread":{"id":"41204","subject":"[PATCH 2/2] gitk: Allow checking out a remote branch","startedAt":"2016-01-15T21:31:38Z","lastAt":"2016-12-12T01:58:38Z","messageCount":9,"participants":["Rogier Goossens","Paul Mackerras"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"276210","messageId":"51900395.pKIx87RN0F@wiske","threadId":"41204","inReplyTo":null,"subject":"[PATCH 0/2] gitk: Two improvements to the branch context menu","fromName":"Rogier Goossens","fromEmail":"goossens.rogier@gmail.com","sentAt":"2016-01-15T21:31:38Z","receivedAt":"2016-01-15T21:31:38Z","isPatch":true,"sender":{"key":"goossens.rogier@gmail.com","avatar":null},"body":"Hi,\n\nI made two improvements to the gitk branch context menu:\n1) gitk: Add a 'rename' option to the branch context menu\n2) gitk: Allow checking out a remote branch\n\t(i.e. create and check out a local branch that tracks\n\tthe specified remote branch)\n\nThey are related by the facts that they both affect the\nbranch context menu, and that the second depends on changes\nintroduced by the first.\n"},{"id":"276209","messageId":"1859807.50qitjY8Ul@wiske","threadId":"41204","inReplyTo":"51900395.pKIx87RN0F@wiske","subject":"[PATCH 1/2] gitk: Add a 'rename' option to the branch context menu","fromName":"Rogier Goossens","fromEmail":"goossens.rogier@gmail.com","sentAt":"2016-01-15T21:38:49Z","receivedAt":"2016-01-15T21:38:49Z","isPatch":true,"sender":{"key":"goossens.rogier@gmail.com","avatar":null},"body":"\nSigned-off-by: Rogier Goossens <goossens.rogier@gmail.com>\n---\n gitk | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----\n 1 file changed, 84 insertions(+), 5 deletions(-)\n\ndiff --git a/gitk b/gitk\nindex 5f1255c..e9465fb 100755\n--- a/gitk\n+++ b/gitk\n@@ -2665,6 +2665,7 @@ proc makewindow {} {\n     makemenu $headctxmenu {\n \t{mc \"Check out this branch\" command cobranch}\n \t{mc \"Remove this branch\" command rmbranch}\n+\t{mc \"Rename this branch\" command mvbranch}\n \t{mc \"Copy branch name\" command {clipboard clear; clipboard append $headmenuhead}}\n     }\n     $headctxmenu configure -tearoff 0\n@@ -9526,6 +9527,80 @@ proc mkbrgo {top} {\n     }\n }\n \n+proc mvbranch {} {\n+    global mvbrtop NS\n+    global headmenuid headmenuhead\n+\n+    set prevname $headmenuhead\n+    set id $headmenuid\n+\n+    set top .renamebranch\n+    catch {destroy $top}\n+    ttk_toplevel $top\n+    make_transient $top .\n+    ${NS}::label $top.title -text [mc \"Rename branch %s\" $prevname]\n+    grid $top.title - -pady 10\n+    ${NS}::label $top.id -text [mc \"ID:\"]\n+    ${NS}::entry $top.sha1 -width 40\n+    $top.sha1 insert 0 $id\n+    $top.sha1 conf -state readonly\n+    grid $top.id $top.sha1 -sticky w\n+    ${NS}::label $top.nlab -text [mc \"Name:\"]\n+    ${NS}::entry $top.name -width 40\n+    $top.name insert 0 $prevname\n+    grid $top.nlab $top.name -sticky w\n+    ${NS}::frame $top.buts\n+    ${NS}::button $top.buts.go -text [mc \"Rename\"] -command [list mvbrgo $top $prevname]\n+    ${NS}::button $top.buts.can -text [mc \"Cancel\"] -command \"catch {destroy $top}\"\n+    bind $top <Key-Return> [list mvbrgo $top $prevname]\n+    bind $top <Key-Escape> \"catch {destroy $top}\"\n+    grid $top.buts.go $top.buts.can\n+    grid columnconfigure $top.buts 0 -weight 1 -uniform a\n+    grid columnconfigure $top.buts 1 -weight 1 -uniform a\n+    grid $top.buts - -pady 10 -sticky ew\n+    focus $top.name\n+}\n+\n+proc mvbrgo {top prevname} {\n+    global headids idheads mainhead mainheadid\n+\n+    set name [$top.name get]\n+    set id [$top.sha1 get]\n+    set cmdargs {}\n+    if {$name eq $prevname} {\n+\tcatch {destroy $top}\n+\treturn\n+    }\n+    if {$name eq {}} {\n+\terror_popup [mc \"Please specify a new name for the branch\"] $top\n+\treturn\n+    }\n+    catch {destroy $top}\n+    lappend cmdargs -m $prevname $name\n+    nowbusy renamebranch\n+    update\n+    if {[catch {\n+\teval exec git branch $cmdargs\n+    } err]} {\n+\tnotbusy renamebranch\n+\terror_popup $err\n+    } else {\n+\tnotbusy renamebranch\n+\tremovehead $id $prevname\n+\tremovedhead $id $prevname\n+\tset headids($name) $id\n+\tlappend idheads($id) $name\n+\taddedhead $id $name\n+\tif {$prevname eq $mainhead} {\n+\t    set mainhead $name\n+\t    set mainheadid $id\n+\t}\n+\tredrawtags $id\n+\tdispneartags 0\n+\trun refill_reflist\n+    }\n+}\n+\n proc exec_citool {tool_args {baseid {}}} {\n     global commitinfo env\n \n@@ -9756,15 +9831,19 @@ proc headmenu {x y id head} {\n     stopfinding\n     set headmenuid $id\n     set headmenuhead $head\n-    set state normal\n+    array set state {0 normal 1 normal 2 normal 3 normal}\n     if {[string match \"remotes/*\" $head]} {\n-\tset state disabled\n+\tset state(0) disabled\n+\tset state(1) disabled\n+\tset state(2) disabled\n     }\n     if {$head eq $mainhead} {\n-\tset state disabled\n+\tset state(0) disabled\n+\tset state(1) disabled\n+    }\n+    foreach i {0 1 2 3} {\n+\t$headctxmenu entryconfigure $i -state $state($i)\n     }\n-    $headctxmenu entryconfigure 0 -state $state\n-    $headctxmenu entryconfigure 1 -state $state\n     tk_popup $headctxmenu $x $y\n }\n \n-- \n2.1.4\n"},{"id":"276208","messageId":"1964156.4P5fNkQCS3@wiske","threadId":"41204","inReplyTo":"51900395.pKIx87RN0F@wiske","subject":"[PATCH 2/2] gitk: Allow checking out a remote branch","fromName":"Rogier Goossens","fromEmail":"goossens.rogier@gmail.com","sentAt":"2016-01-15T21:43:47Z","receivedAt":"2016-01-15T21:43:47Z","isPatch":true,"sender":{"key":"goossens.rogier@gmail.com","avatar":null},"body":"\nGit allows checking out remote branches, creating a local tracking\nbranch in the process. Allow gitk to do this as well, provided a\nlocal branch of the same name does not yet exist.\n\nSigned-off-by: Rogier Goossens <goossens.rogier@gmail.com>\n---\n gitk | 35 ++++++++++++++++++++++++++++++-----\n 1 file changed, 30 insertions(+), 5 deletions(-)\n\ndiff --git a/gitk b/gitk\nindex e9465fb..7d5fd33 100755\n--- a/gitk\n+++ b/gitk\n@@ -9826,14 +9826,17 @@ proc readresetstat {fd} {\n \n # context menu for a head\n proc headmenu {x y id head} {\n-    global headmenuid headmenuhead headctxmenu mainhead\n+    global headmenuid headmenuhead headctxmenu mainhead headids\n \n     stopfinding\n     set headmenuid $id\n     set headmenuhead $head\n     array set state {0 normal 1 normal 2 normal 3 normal}\n     if {[string match \"remotes/*\" $head]} {\n-\tset state(0) disabled\n+\tset localhead [string range $head [expr [string last / $head] + 1] end]\n+\tif {[info exists headids($localhead)]} {\n+\t    set state(0) disabled\n+\t}\n \tset state(1) disabled\n \tset state(2) disabled\n     }\n@@ -9852,11 +9855,27 @@ proc cobranch {} {\n     global showlocalchanges\n \n     # check the tree is clean first??\n+    set newhead $headmenuhead\n+    set command [list | git checkout]\n+    if {[string match \"remotes/*\" $newhead]} {\n+\tset remote $newhead\n+\tset newhead [string range $newhead [expr [string last / $newhead] + 1] end]\n+\t# The following check is redundant - the menu option should\n+\t# be disabled to begin with...\n+\tif {[info exists headids($newhead)]} {\n+\t    error_popup [mc \"A local branch named %s exists already\" $newhead]\n+\t    return\n+\t}\n+\tlappend command -b $newhead --track $remote\n+    } else {\n+\tlappend command $newhead\n+    }\n+    lappend command 2>@1\n     nowbusy checkout [mc \"Checking out\"]\n     update\n     dohidelocalchanges\n     if {[catch {\n-\tset fd [open [list | git checkout $headmenuhead 2>@1] r]\n+\tset fd [open $command r]\n     } err]} {\n \tnotbusy checkout\n \terror_popup $err\n@@ -9864,12 +9883,12 @@ proc cobranch {} {\n \t    dodiffindex\n \t}\n     } else {\n-\tfilerun $fd [list readcheckoutstat $fd $headmenuhead $headmenuid]\n+\tfilerun $fd [list readcheckoutstat $fd $newhead $headmenuid]\n     }\n }\n \n proc readcheckoutstat {fd newhead newheadid} {\n-    global mainhead mainheadid headids showlocalchanges progresscoords\n+    global mainhead mainheadid headids idheads showlocalchanges progresscoords\n     global viewmainheadid curview\n \n     if {[gets $fd line] >= 0} {\n@@ -9884,8 +9903,14 @@ proc readcheckoutstat {fd newhead newheadid} {\n     notbusy checkout\n     if {[catch {close $fd} err]} {\n \terror_popup $err\n+\treturn\n     }\n     set oldmainid $mainheadid\n+    if {! [info exists headids($newhead)]} {\n+\tset headids($newhead) $newheadid\n+\tlappend idheads($newheadid) $newhead\n+\taddedhead $newheadid $newhead\n+    }\n     set mainhead $newhead\n     set mainheadid $newheadid\n     set viewmainheadid($curview) $newheadid\n-- \n2.1.4\n"},{"id":"281217","messageId":"20160319034555.GB27126@fergus.ozlabs.ibm.com","threadId":"41204","inReplyTo":"1859807.50qitjY8Ul@wiske","subject":"Re: [PATCH 1/2] gitk: Add a 'rename' option to the branch context menu","fromName":"Paul Mackerras","fromEmail":"paulus@ozlabs.org","sentAt":"2016-03-19T03:45:55Z","receivedAt":"2016-03-19T03:45:55Z","isPatch":true,"sender":{"key":"paulus@ozlabs.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"On Fri, Jan 15, 2016 at 10:38:49PM +0100, Rogier Goossens wrote:\n> \n> Signed-off-by: Rogier Goossens <goossens.rogier@gmail.com>\n\nThis is a nice idea; I just have some comments about the Tcl here:\n\n> @@ -9756,15 +9831,19 @@ proc headmenu {x y id head} {\n>      stopfinding\n>      set headmenuid $id\n>      set headmenuhead $head\n> -    set state normal\n> +    array set state {0 normal 1 normal 2 normal 3 normal}\n>      if {[string match \"remotes/*\" $head]} {\n> -\tset state disabled\n> +\tset state(0) disabled\n> +\tset state(1) disabled\n> +\tset state(2) disabled\n\nWhy not \"array set state {0 disabled 1 disabled 2 disabled}\" instead?\n\n>      }\n>      if {$head eq $mainhead} {\n> -\tset state disabled\n> +\tset state(0) disabled\n> +\tset state(1) disabled\n\nSimilarly, \"array set state {0 disabled 1 disabled}\".\n\n> +    }\n> +    foreach i {0 1 2 3} {\n\nWhy do you go up to 3 when we never disable the 3rd entry?\n\nPaul.\n"},{"id":"281266","messageId":"10662590.KWXHt2RUKZ@wiske","threadId":"41204","inReplyTo":"51900395.pKIx87RN0F@wiske","subject":"[PATCH v2 0/2] gitk: Two improvements to the branch context menu","fromName":"Rogier Goossens","fromEmail":"goossens.rogier@gmail.com","sentAt":"2016-03-19T18:31:32Z","receivedAt":"2016-03-19T18:31:32Z","isPatch":true,"sender":{"key":"goossens.rogier@gmail.com","avatar":null},"body":"Hi,\n\nHereby the revised patches.\n\nChanges since v1:\n- Rebased on latest master\n- Made the changes you suggested\n- Moved 'rename branch' menu option above 'delete branch'\n- Cleaned up some code duplication that the previous patches \nintroduced.\n\nRogier.\n"},{"id":"281265","messageId":"1733024.6FbHNINAh3@wiske","threadId":"41204","inReplyTo":"10662590.KWXHt2RUKZ@wiske","subject":"[PATCH 1/2] gitk: Add a 'rename' option to the branch context menu","fromName":"Rogier Goossens","fromEmail":"goossens.rogier@gmail.com","sentAt":"2016-03-19T18:32:16Z","receivedAt":"2016-03-19T18:32:16Z","isPatch":true,"sender":{"key":"goossens.rogier@gmail.com","avatar":null},"body":"\nSigned-off-by: Rogier Goossens <goossens.rogier@gmail.com>\n---\n gitk | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------\n 1 file changed, 85 insertions(+), 11 deletions(-)\n\ndiff --git a/gitk b/gitk\nindex 805a1c7..84b49bc 100755\n--- a/gitk\n+++ b/gitk\n@@ -2664,6 +2664,7 @@ proc makewindow {} {\n     set headctxmenu .headctxmenu\n     makemenu $headctxmenu {\n \t{mc \"Check out this branch\" command cobranch}\n+\t{mc \"Rename this branch\" command mvbranch}\n \t{mc \"Remove this branch\" command rmbranch}\n \t{mc \"Copy branch name\" command {clipboard clear; clipboard append $headmenuhead}}\n     }\n@@ -9452,26 +9453,58 @@ proc wrcomcan {} {\n }\n \n proc mkbranch {} {\n-    global rowmenuid mkbrtop NS\n+    global NS rowmenuid\n+\n+    set top .branchdialog\n+\n+    set val(name) \"\"\n+    set val(id) $rowmenuid\n+    set val(command) [list mkbrgo $top]\n+\n+    set ui(title) [mc \"Create branch\"]\n+    set ui(accept) [mc \"Create\"]\n+\n+    branchdia $top val ui\n+}\n+\n+proc mvbranch {} {\n+    global NS\n+    global headmenuid headmenuhead\n+\n+    set top .branchdialog\n+\n+    set val(name) $headmenuhead\n+    set val(id) $headmenuid\n+    set val(command) [list mvbrgo $top $headmenuhead]\n+\n+    set ui(title) [mc \"Rename branch %s\" $headmenuhead]\n+    set ui(accept) [mc \"Rename\"]\n+\n+    branchdia $top val ui\n+}\n+\n+proc branchdia {top valvar uivar} {\n+    global NS\n+    upvar $valvar val $uivar ui\n \n-    set top .makebranch\n     catch {destroy $top}\n     ttk_toplevel $top\n     make_transient $top .\n-    ${NS}::label $top.title -text [mc \"Create new branch\"]\n+    ${NS}::label $top.title -text $ui(title)\n     grid $top.title - -pady 10\n     ${NS}::label $top.id -text [mc \"ID:\"]\n     ${NS}::entry $top.sha1 -width 40\n-    $top.sha1 insert 0 $rowmenuid\n+    $top.sha1 insert 0 $val(id)\n     $top.sha1 conf -state readonly\n     grid $top.id $top.sha1 -sticky w\n     ${NS}::label $top.nlab -text [mc \"Name:\"]\n     ${NS}::entry $top.name -width 40\n+    $top.name insert 0 $val(name)\n     grid $top.nlab $top.name -sticky w\n     ${NS}::frame $top.buts\n-    ${NS}::button $top.buts.go -text [mc \"Create\"] -command [list mkbrgo $top]\n+    ${NS}::button $top.buts.go -text $ui(accept) -command $val(command)\n     ${NS}::button $top.buts.can -text [mc \"Cancel\"] -command \"catch {destroy $top}\"\n-    bind $top <Key-Return> [list mkbrgo $top]\n+    bind $top <Key-Return> $val(command)\n     bind $top <Key-Escape> \"catch {destroy $top}\"\n     grid $top.buts.go $top.buts.can\n     grid columnconfigure $top.buts 0 -weight 1 -uniform a\n@@ -9526,6 +9559,46 @@ proc mkbrgo {top} {\n     }\n }\n \n+proc mvbrgo {top prevname} {\n+    global headids idheads mainhead mainheadid\n+\n+    set name [$top.name get]\n+    set id [$top.sha1 get]\n+    set cmdargs {}\n+    if {$name eq $prevname} {\n+\tcatch {destroy $top}\n+\treturn\n+    }\n+    if {$name eq {}} {\n+\terror_popup [mc \"Please specify a new name for the branch\"] $top\n+\treturn\n+    }\n+    catch {destroy $top}\n+    lappend cmdargs -m $prevname $name\n+    nowbusy renamebranch\n+    update\n+    if {[catch {\n+\teval exec git branch $cmdargs\n+    } err]} {\n+\tnotbusy renamebranch\n+\terror_popup $err\n+    } else {\n+\tnotbusy renamebranch\n+\tremovehead $id $prevname\n+\tremovedhead $id $prevname\n+\tset headids($name) $id\n+\tlappend idheads($id) $name\n+\taddedhead $id $name\n+\tif {$prevname eq $mainhead} {\n+\t    set mainhead $name\n+\t    set mainheadid $id\n+\t}\n+\tredrawtags $id\n+\tdispneartags 0\n+\trun refill_reflist\n+    }\n+}\n+\n proc exec_citool {tool_args {baseid {}}} {\n     global commitinfo env\n \n@@ -9756,15 +9829,16 @@ proc headmenu {x y id head} {\n     stopfinding\n     set headmenuid $id\n     set headmenuhead $head\n-    set state normal\n+    array set state {0 normal 1 normal 2 normal}\n     if {[string match \"remotes/*\" $head]} {\n-\tset state disabled\n+\tarray set state {0 disabled 1 disabled 2 disabled}\n     }\n     if {$head eq $mainhead} {\n-\tset state disabled\n+\tarray set state {0 disabled 2 disabled}\n+    }\n+    foreach i {0 1 2} {\n+\t$headctxmenu entryconfigure $i -state $state($i)\n     }\n-    $headctxmenu entryconfigure 0 -state $state\n-    $headctxmenu entryconfigure 1 -state $state\n     tk_popup $headctxmenu $x $y\n }\n \n-- \n2.1.4\n"},{"id":"281264","messageId":"4410053.4PRisWLqAX@wiske","threadId":"41204","inReplyTo":"10662590.KWXHt2RUKZ@wiske","subject":"[PATCH 2/2] gitk: Allow checking out a remote branch","fromName":"Rogier Goossens","fromEmail":"goossens.rogier@gmail.com","sentAt":"2016-03-19T18:33:03Z","receivedAt":"2016-03-19T18:33:03Z","isPatch":true,"sender":{"key":"goossens.rogier@gmail.com","avatar":null},"body":"\nGit allows checking out remote branches, creating a local tracking\nbranch in the process. Allow gitk to do this as well, provided a\nlocal branch of the same name does not yet exist.\n\nSigned-off-by: Rogier Goossens <goossens.rogier@gmail.com>\n---\n gitk | 36 +++++++++++++++++++++++++++++++-----\n 1 file changed, 31 insertions(+), 5 deletions(-)\n\ndiff --git a/gitk b/gitk\nindex 84b49bc..dc75c97 100755\n--- a/gitk\n+++ b/gitk\n@@ -9824,14 +9824,18 @@ proc readresetstat {fd} {\n \n # context menu for a head\n proc headmenu {x y id head} {\n-    global headmenuid headmenuhead headctxmenu mainhead\n+    global headmenuid headmenuhead headctxmenu mainhead headids\n \n     stopfinding\n     set headmenuid $id\n     set headmenuhead $head\n     array set state {0 normal 1 normal 2 normal}\n     if {[string match \"remotes/*\" $head]} {\n-\tarray set state {0 disabled 1 disabled 2 disabled}\n+\tset localhead [string range $head [expr [string last / $head] + 1] end]\n+\tif {[info exists headids($localhead)]} {\n+\t    set state(0) disabled\n+\t}\n+\tarray set state {1 disabled 2 disabled}\n     }\n     if {$head eq $mainhead} {\n \tarray set state {0 disabled 2 disabled}\n@@ -9847,11 +9851,27 @@ proc cobranch {} {\n     global showlocalchanges\n \n     # check the tree is clean first??\n+    set newhead $headmenuhead\n+    set command [list | git checkout]\n+    if {[string match \"remotes/*\" $newhead]} {\n+\tset remote $newhead\n+\tset newhead [string range $newhead [expr [string last / $newhead] + 1] end]\n+\t# The following check is redundant - the menu option should\n+\t# be disabled to begin with...\n+\tif {[info exists headids($newhead)]} {\n+\t    error_popup [mc \"A local branch named %s exists already\" $newhead]\n+\t    return\n+\t}\n+\tlappend command -b $newhead --track $remote\n+    } else {\n+\tlappend command $newhead\n+    }\n+    lappend command 2>@1\n     nowbusy checkout [mc \"Checking out\"]\n     update\n     dohidelocalchanges\n     if {[catch {\n-\tset fd [open [list | git checkout $headmenuhead 2>@1] r]\n+\tset fd [open $command r]\n     } err]} {\n \tnotbusy checkout\n \terror_popup $err\n@@ -9859,12 +9879,12 @@ proc cobranch {} {\n \t    dodiffindex\n \t}\n     } else {\n-\tfilerun $fd [list readcheckoutstat $fd $headmenuhead $headmenuid]\n+\tfilerun $fd [list readcheckoutstat $fd $newhead $headmenuid]\n     }\n }\n \n proc readcheckoutstat {fd newhead newheadid} {\n-    global mainhead mainheadid headids showlocalchanges progresscoords\n+    global mainhead mainheadid headids idheads showlocalchanges progresscoords\n     global viewmainheadid curview\n \n     if {[gets $fd line] >= 0} {\n@@ -9879,8 +9899,14 @@ proc readcheckoutstat {fd newhead newheadid} {\n     notbusy checkout\n     if {[catch {close $fd} err]} {\n \terror_popup $err\n+\treturn\n     }\n     set oldmainid $mainheadid\n+    if {! [info exists headids($newhead)]} {\n+\tset headids($newhead) $newheadid\n+\tlappend idheads($newheadid) $newhead\n+\taddedhead $newheadid $newhead\n+    }\n     set mainhead $newhead\n     set mainheadid $newheadid\n     set viewmainheadid($curview) $newheadid\n-- \n2.1.4\n"},{"id":"281921","messageId":"9310641.nkQBije1VN@wiske","threadId":"41204","inReplyTo":"10662590.KWXHt2RUKZ@wiske","subject":"[PATCH v2a 3/3] gitk: Include commit title in branch dialog","fromName":"Rogier Goossens","fromEmail":"goossens.rogier@gmail.com","sentAt":"2016-03-27T07:21:01Z","receivedAt":"2016-03-27T07:21:01Z","isPatch":true,"sender":{"key":"goossens.rogier@gmail.com","avatar":null},"body":"Hi,\n\nI made another branch dialog related change, included in this message.\nIt applies on top of my other two patches.\n\nRogier.\n\n------- 8< ------------------- 8< --------------\n\nOnly the SHA1 was included. It's convenient to have the title\nmentioned as well.\n\nSigned-off-by: Rogier Goossens <goossens.rogier@gmail.com>\n---\n gitk | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/gitk b/gitk\nindex dc75c97..413711e 100755\n--- a/gitk\n+++ b/gitk\n@@ -9484,7 +9484,7 @@ proc mvbranch {} {\n }\n \n proc branchdia {top valvar uivar} {\n-    global NS\n+    global NS commitinfo\n     upvar $valvar val $uivar ui\n \n     catch {destroy $top}\n@@ -9497,6 +9497,11 @@ proc branchdia {top valvar uivar} {\n     $top.sha1 insert 0 $val(id)\n     $top.sha1 conf -state readonly\n     grid $top.id $top.sha1 -sticky w\n+    ${NS}::entry $top.head -width 60\n+    $top.head insert 0 [lindex $commitinfo($val(id)) 0]\n+    $top.head conf -state readonly\n+    grid x $top.head -sticky ew\n+    grid columnconfigure $top 1 -weight 1\n     ${NS}::label $top.nlab -text [mc \"Name:\"]\n     ${NS}::entry $top.name -width 40\n     $top.name insert 0 $val(name)\n-- \n2.1.4\n"},{"id":"307480","messageId":"20161212000219.GC18316@fergus.ozlabs.ibm.com","threadId":"41204","inReplyTo":"10662590.KWXHt2RUKZ@wiske","subject":"Re: [PATCH v2 0/2] gitk: Two improvements to the branch context menu","fromName":"Paul Mackerras","fromEmail":"paulus@ozlabs.org","sentAt":"2016-12-12T00:02:19Z","receivedAt":"2016-12-12T01:58:38Z","isPatch":true,"sender":{"key":"paulus@ozlabs.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"On Sat, Mar 19, 2016 at 07:31:32PM +0100, Rogier Goossens wrote:\n> Hi,\n> \n> Hereby the revised patches.\n> \n> Changes since v1:\n> - Rebased on latest master\n> - Made the changes you suggested\n> - Moved 'rename branch' menu option above 'delete branch'\n> - Cleaned up some code duplication that the previous patches \n> introduced.\n\nThanks, series applied.\n\nPaul.\n"}]}