* [PATCH v2 1/2] gitk: show part of submodule log instead of empty pane when listing trees [not found] <cover.1525862998.git.raa.lkml@gmail.com> @ 2018-05-09 11:00 ` Alex Riesen 2018-05-09 11:00 ` [PATCH v2 2/2] gitk: add an option to run gitk on an item in the file list Alex Riesen 1 sibling, 0 replies; 3+ messages in thread From: Alex Riesen @ 2018-05-09 11:00 UTC (permalink / raw) To: Paul Mackerras; +Cc: Git Mailing List, Junio C Hamano, Stefan Beller From: Alex Riesen <raa.lkml@gmail.com> Currently, selecting a name in the file list (bottom right) panel in "Tree" mode does not do anything useful if the name is a submodule. If gitk is currently showing a commit, the submodule names are not shown at all (which is very confusing). If the gitk is showing the uncached change, the submodules are shown, but focusing a submodule name causes a Tcl error to appear. And finally, if gitk shows the index, the submodule is presented as its bare name in the diff/file contents panel. This change will show the first arbitrarily chosen number of commits. --- gitk | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/gitk b/gitk index a14d7a1..742f36b 100755 --- a/gitk +++ b/gitk @@ -7627,9 +7627,10 @@ proc gettreeline {gtf id} { if {$i < 0} continue set fname [string range $line [expr {$i+1}] end] set line [string range $line 0 [expr {$i-1}]] - if {$diffids ne $nullid2 && [lindex $line 1] ne "blob"} continue + set objtype [lindex $line 1] + if {$diffids ne $nullid2 && $objtype ne "blob" && $objtype ne "commit" } { continue } set sha1 [lindex $line 2] - lappend treeidlist($id) $sha1 + lappend treeidlist($id) "$sha1 $objtype" } if {[string index $fname 0] eq "\""} { set fname [lindex $fname 0] @@ -7659,21 +7660,44 @@ proc showfile {f} { global ctext_file_names ctext_file_lines global ctext commentend + set submodlog "log --format=%h\\ %aN:\\ %s -100" + set fcmt "" set i [lsearch -exact $treefilelist($diffids) $f] if {$i < 0} { puts "oops, $f not in list for id $diffids" return } if {$diffids eq $nullid} { - if {[catch {set bf [open $f r]} err]} { - puts "oops, can't read $f: $err" - return + if {[file isdirectory $f]} { + # a submodule + set qf [shellquote $f] + if {[catch {set bf [open "| git -C $qf $submodlog" r]} err]} { + puts "oops, can't read submodule $f: $err" + return + } + } else { + if {[catch {set bf [open $f r]} err]} { + puts "oops, can't read $f: $err" + return + } } } else { - set blob [lindex $treeidlist($diffids) $i] - if {[catch {set bf [open [concat | git cat-file blob $blob] r]} err]} { - puts "oops, error reading blob $blob: $err" - return + set bo [lindex $treeidlist($diffids) $i] + set blob [lindex $bo 0] + set objtype [lindex $bo 1] + if { "$objtype" eq "blob" } { + if {[catch {set bf [open [concat | git cat-file blob $blob] r]} err]} { + puts "oops, error reading blob $blob: $err" + return + } + } else { + # also a submodule + set qf [shellquote $f] + if {[catch {set bf [open "| git -C $qf $submodlog $blob" r]} err]} { + puts "oops, error reading submodule commit: $err" + return + } + set fcmt "/" } } fconfigure $bf -blocking 0 -encoding [get_path_encoding $f] @@ -7683,7 +7707,7 @@ proc showfile {f} { lappend ctext_file_names $f lappend ctext_file_lines [lindex [split $commentend "."] 0] $ctext insert end "\n" - $ctext insert end "$f\n" filesep + $ctext insert end "$f$fcmt\n" filesep $ctext config -state disabled $ctext yview $commentend settabs 0 -- 2.17.0.593.g2029711e64 --- Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft. https://www.avast.com/antivirus ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v2 2/2] gitk: add an option to run gitk on an item in the file list [not found] <cover.1525862998.git.raa.lkml@gmail.com> 2018-05-09 11:00 ` [PATCH v2 1/2] gitk: show part of submodule log instead of empty pane when listing trees Alex Riesen @ 2018-05-09 11:00 ` Alex Riesen 1 sibling, 0 replies; 3+ messages in thread From: Alex Riesen @ 2018-05-09 11:00 UTC (permalink / raw) To: Paul Mackerras; +Cc: Git Mailing List, Junio C Hamano, Stefan Beller From: Alex Riesen <raa.lkml@gmail.com> Similar to a git gui feature which visualizes history in a submodule, the submodules cause the gitk be started inside the submodule. --- gitk | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gitk b/gitk index 742f36b..c430dfe 100755 --- a/gitk +++ b/gitk @@ -2682,6 +2682,7 @@ proc makewindow {} { {mc "External diff" command {external_diff}} {mc "Blame parent commit" command {external_blame 1}} {mc "Copy path" command {clipboard clear; clipboard append $flist_menu_file}} + {mc "Run gitk on this" command {flist_gitk}} } $flist_menu configure -tearoff 0 @@ -3555,6 +3556,17 @@ proc flist_hl {only} { set gdttype [mc "touching paths:"] } +proc flist_gitk {} { + global flist_menu_file findstring gdttype + + set x [shellquote $flist_menu_file] + if {[file isdirectory $flist_menu_file]} { + exec sh -c "cd $x&&gitk" & + } else { + exec gitk -- $x & + } +} + proc gitknewtmpdir {} { global diffnum gitktmpdir gitdir env -- 2.17.0.593.g2029711e64 --- Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft. https://www.avast.com/antivirus ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v2 0/2] gitk: improve handling of submodules in the file list panel
@ 2018-05-09 12:35 Alex Riesen
2018-05-09 12:35 ` [PATCH v2 1/2] gitk: show part of submodule log instead of empty pane when listing trees Alex Riesen
0 siblings, 1 reply; 3+ messages in thread
From: Alex Riesen @ 2018-05-09 12:35 UTC (permalink / raw)
To: Paul Mackerras
Cc: Git Mailing List, Junio C Hamano, Alex Riesen, Stefan Beller,
Bert Wesarg
From: Alex Riesen <raa.lkml@gmail.com>
Currently, the submodule entries in the file list panel are mostly ignored.
This series attempts to improve the situation by showing part of submodule
history when focusing it in the file list panel and by adding a menu element
to start gitk in the submodule (similar to git gui).
This iteration does not address the behaviour of file list panel in tree mode
when gitk is started from a subdirectory (gitk strictly limits the file
listing to the files in that repository, without a way out).
I would like to hear some more opinions regarding changing its behaviour to
always list the full tree.
Alex Riesen (2):
gitk: show part of submodule log instead of empty pane when listing
trees
gitk: add an option to run gitk on an item in the file list
gitk | 56 ++++++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 46 insertions(+), 10 deletions(-)
--
2.17.0.593.g2029711e64
---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v2 1/2] gitk: show part of submodule log instead of empty pane when listing trees 2018-05-09 12:35 [PATCH v2 0/2] gitk: improve handling of submodules in the file list panel Alex Riesen @ 2018-05-09 12:35 ` Alex Riesen 0 siblings, 0 replies; 3+ messages in thread From: Alex Riesen @ 2018-05-09 12:35 UTC (permalink / raw) To: Paul Mackerras; +Cc: Git Mailing List, Junio C Hamano, Stefan Beller From: Alex Riesen <raa.lkml@gmail.com> Currently, selecting a name in the file list (bottom right) panel in "Tree" mode does not do anything useful if the name is a submodule. If gitk is currently showing a commit, the submodule names are not shown at all (which is very confusing). If the gitk is showing the uncached change, the submodules are shown, but focusing a submodule name causes a Tcl error to appear. And finally, if gitk shows the index, the submodule is presented as its bare name in the diff/file contents panel. This change will show the first arbitrarily chosen number of commits. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> --- gitk | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/gitk b/gitk index a14d7a1..742f36b 100755 --- a/gitk +++ b/gitk @@ -7627,9 +7627,10 @@ proc gettreeline {gtf id} { if {$i < 0} continue set fname [string range $line [expr {$i+1}] end] set line [string range $line 0 [expr {$i-1}]] - if {$diffids ne $nullid2 && [lindex $line 1] ne "blob"} continue + set objtype [lindex $line 1] + if {$diffids ne $nullid2 && $objtype ne "blob" && $objtype ne "commit" } { continue } set sha1 [lindex $line 2] - lappend treeidlist($id) $sha1 + lappend treeidlist($id) "$sha1 $objtype" } if {[string index $fname 0] eq "\""} { set fname [lindex $fname 0] @@ -7659,21 +7660,44 @@ proc showfile {f} { global ctext_file_names ctext_file_lines global ctext commentend + set submodlog "log --format=%h\\ %aN:\\ %s -100" + set fcmt "" set i [lsearch -exact $treefilelist($diffids) $f] if {$i < 0} { puts "oops, $f not in list for id $diffids" return } if {$diffids eq $nullid} { - if {[catch {set bf [open $f r]} err]} { - puts "oops, can't read $f: $err" - return + if {[file isdirectory $f]} { + # a submodule + set qf [shellquote $f] + if {[catch {set bf [open "| git -C $qf $submodlog" r]} err]} { + puts "oops, can't read submodule $f: $err" + return + } + } else { + if {[catch {set bf [open $f r]} err]} { + puts "oops, can't read $f: $err" + return + } } } else { - set blob [lindex $treeidlist($diffids) $i] - if {[catch {set bf [open [concat | git cat-file blob $blob] r]} err]} { - puts "oops, error reading blob $blob: $err" - return + set bo [lindex $treeidlist($diffids) $i] + set blob [lindex $bo 0] + set objtype [lindex $bo 1] + if { "$objtype" eq "blob" } { + if {[catch {set bf [open [concat | git cat-file blob $blob] r]} err]} { + puts "oops, error reading blob $blob: $err" + return + } + } else { + # also a submodule + set qf [shellquote $f] + if {[catch {set bf [open "| git -C $qf $submodlog $blob" r]} err]} { + puts "oops, error reading submodule commit: $err" + return + } + set fcmt "/" } } fconfigure $bf -blocking 0 -encoding [get_path_encoding $f] @@ -7683,7 +7707,7 @@ proc showfile {f} { lappend ctext_file_names $f lappend ctext_file_lines [lindex [split $commentend "."] 0] $ctext insert end "\n" - $ctext insert end "$f\n" filesep + $ctext insert end "$f$fcmt\n" filesep $ctext config -state disabled $ctext yview $commentend settabs 0 -- 2.17.0.593.g2029711e64 --- Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft. https://www.avast.com/antivirus ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-05-09 12:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <cover.1525862998.git.raa.lkml@gmail.com>
2018-05-09 11:00 ` [PATCH v2 1/2] gitk: show part of submodule log instead of empty pane when listing trees Alex Riesen
2018-05-09 11:00 ` [PATCH v2 2/2] gitk: add an option to run gitk on an item in the file list Alex Riesen
2018-05-09 12:35 [PATCH v2 0/2] gitk: improve handling of submodules in the file list panel Alex Riesen
2018-05-09 12:35 ` [PATCH v2 1/2] gitk: show part of submodule log instead of empty pane when listing trees Alex Riesen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox