{"thread":{"id":"37959","subject":"[PATCH 1/1] gitk: Add support for --author-date-order","startedAt":"2014-11-13T23:06:03Z","lastAt":"2014-11-13T23:06:03Z","messageCount":1,"participants":["lennart spitzner"],"isPatch":true,"patchVersion":1,"patchTotal":1},"messages":[{"id":"251870","messageId":"5465395B.5020807@informatik.uni-kiel.de","threadId":"37959","inReplyTo":null,"subject":"[PATCH 1/1] gitk: Add support for --author-date-order","fromName":"lennart spitzner","fromEmail":"lsp@informatik.uni-kiel.de","sentAt":"2014-11-13T23:06:03Z","receivedAt":"2014-11-13T23:06:03Z","isPatch":true,"sender":{"key":"lsp@informatik.uni-kiel.de","avatar":null},"body":"gitk previously allowed sort-by-committer-date.\nNow also allow sort-by-author-date.\n\nSeparate the three options for ordering in a new line in the\nview-config-dialogue, using radio buttons.\n\nSigned-off-by: Lennart Spitzner <lsp@informatik.uni-kiel.de>\n---\nFound this useful for displaying a history with a rebase-heavy workflow,\nwhere the committer-timestamps were largely different from\nauthor-timestamps; sort-by-author-date produces a much simpler graph.\n\nI do not really know much tcl, so review closely :p\n\n gitk | 33 ++++++++++++++++++++++++---------\n 1 file changed, 24 insertions(+), 9 deletions(-)\n\ndiff --git a/gitk b/gitk\nindex 78358a7..c176b79 100755\n--- a/gitk\n+++ b/gitk\n@@ -155,11 +155,12 @@ proc unmerged_files {files} {\n }\n  proc parseviewargs {n arglist} {\n-    global vdatemode vmergeonly vflags vdflags vrevs vfiltered vorigargs env\n+    global vdatemode vauthordatemode vmergeonly vflags vdflags vrevs vfiltered vorigargs env\n     global vinlinediff\n     global worddiff git_version\n      set vdatemode($n) 0\n+    set vauthordatemode($n) 0\n     set vmergeonly($n) 0\n     set vinlinediff($n) 0\n     set glflags {}\n@@ -185,6 +186,12 @@ proc parseviewargs {n arglist} {\n \t\tset origargs [lreplace $origargs $i $i]\n \t\tincr i -1\n \t    }\n+\t    \"--author-date-order\" {\n+\t\tset vauthordatemode($n) 1\n+\t\t# remove from origargs in case we hit an unknown option\n+\t\tset origargs [lreplace $origargs $i $i]\n+\t\tincr i -1\n+\t    }\n \t    \"-[puabwcrRBMC]\" -\n \t    \"--no-renames\" - \"--full-index\" - \"--binary\" - \"--abbrev=*\" -\n \t    \"--find-copies-harder\" - \"-l*\" - \"--ext-diff\" - \"--no-ext-diff\" -\n@@ -690,17 +697,21 @@ proc seeds {v} {\n }\n  proc newvarc {view id} {\n-    global varcid varctok parents children vdatemode\n+    global varcid varctok parents children vdatemode vauthordatemode\n     global vupptr vdownptr vleftptr vbackptr varcrow varcix varcstart\n     global commitdata commitinfo vseedcount varccommits vlastins\n      set a [llength $varctok($view)]\n     set vid $view,$id\n-    if {[llength $children($vid)] == 0 || $vdatemode($view)} {\n+    if {[llength $children($vid)] == 0 || $vdatemode($view) || $vauthordatemode($view)} {\n \tif {![info exists commitinfo($id)]} {\n \t    parsecommit $id $commitdata($id) 1\n \t}\n-\tset cdate [lindex [lindex $commitinfo($id) 4] 0]\n+\tif {$vauthordatemode($view)} {\n+\t    set cdate [lindex [lindex $commitinfo($id) 2] 0]\n+\t} else {\n+\t    set cdate [lindex [lindex $commitinfo($id) 4] 0]\n+\t}\n \tif {![string is integer -strict $cdate]} {\n \t    set cdate 0\n \t}\n@@ -800,7 +811,7 @@ proc splitvarc {p v} {\n  proc renumbervarc {a v} {\n     global parents children varctok varcstart varccommits\n-    global vupptr vdownptr vleftptr vbackptr vlastins varcid vtokmod vdatemode\n+    global vupptr vdownptr vleftptr vbackptr vlastins varcid vtokmod vdatemode vauthordatemode\n      set t1 [clock clicks -milliseconds]\n     set todo {}\n@@ -836,7 +847,7 @@ proc renumbervarc {a v} {\n \t\t\t\t      $children($v,$id)]\n \t}\n \tset oldtok [lindex $varctok($v) $a]\n-\tif {!$vdatemode($v)} {\n+\tif {!($vdatemode($v) || $vauthordatemode($v))} {\n \t    set tok {}\n \t} else {\n \t    set tok $oldtok\n@@ -1411,7 +1422,7 @@ proc check_interest {id scripts} {\n  proc getcommitlines {fd inst view updating}  {\n     global cmitlisted leftover\n-    global commitidx commitdata vdatemode\n+    global commitidx commitdata vdatemode vauthordatemode\n     global parents children curview hlview\n     global idpending ordertok\n     global varccommits varcid varctok vtokmod vfilelimit vshortids\n@@ -1553,7 +1564,7 @@ proc getcommitlines {fd inst view updating}  {\n \t} elseif {$a == 0 && [llength $children($vid)] == 1} {\n \t    set k [lindex $children($vid) 0]\n \t    if {[llength $parents($view,$k)] == 1 &&\n-\t\t(!$vdatemode($view) ||\n+\t\t(!($vdatemode($view) || $vauthordatemode($view)) ||\n \t\t $varcid($view,$k) == [llength $varctok($view)] - 1)} {\n \t\tset a $varcid($view,$k)\n \t    }\n@@ -3987,8 +3998,11 @@ set known_view_options {\n     {limit_lbl l    +  {}               {mc \"Limit and/or skip a number of revisions (positive integer):\"}}\n     {limit     t10  *. \"--max-count=*\"  {mc \"Number to show:\"}}\n     {skip      t10  .  \"--skip=*\"       {mc \"Number to skip:\"}}\n+    {order_l   l    +  {}               {mc \"Ordering:\"}}\n+    {order_s   r0   .  {}               {mc \"Default order\"}}\n+    {order_c   r1   .  {\"--date-order\" \"-d\"}      {mc \"Strictly sort by (committer) date\"}}\n+    {order_a   r2   .  \"--author-date-order\"      {mc \"Strictly sort by author date\"}}\n     {misc_lbl  l    +  {}               {mc \"Miscellaneous options:\"}}\n-    {dorder    b    *. {\"--date-order\" \"-d\"}      {mc \"Strictly sort by date\"}}\n     {lright    b    .  \"--left-right\"   {mc \"Mark branch sides\"}}\n     {first     b    .  \"--first-parent\" {mc \"Limit to first parent\"}}\n     {smplhst   b    .  \"--simplify-by-decoration\"   {mc \"Simple history\"}}\n@@ -12308,6 +12322,7 @@ if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} {\n     set viewargscmd(1) $revtreeargscmd\n     set viewperm(1) 0\n     set vdatemode(1) 0\n+    set vauthordatemode(1) 0\n     addviewmenu 1\n     .bar.view entryconf [mca \"Edit view...\"] -state normal\n     .bar.view entryconf [mca \"Delete view\"] -state normal\n-- \n2.1.3\n"}]}