Re: [PATCH 1/2] gitk: show part of submodule log instead of empty pane when listing trees
From: Stefan Beller <hidden>
Date: 2018-05-08 17:07:34
On Tue, May 8, 2018 at 5:22 AM, Alex Riesen [off-list ref] wrote:
From: Alex Riesen <redacted> Currently, the submodules either are not shown at all (if listing a committed tree) or a Tcl error appears (when clicking on a submodule from the index list).
I do not understand where this appears, yet. Where do I have to click to see the effects of this patch?
quoted hunk ↗ jump to hunk
This will make it show first arbitrarily chosen number of commits, which might be only marginally better. Signed-off-by: Alex Riesen <redacted> --- gitk | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-)diff --git a/gitk b/gitk index a14d7a1..d34833f 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,42 @@ proc showfile {f} { global ctext_file_names ctext_file_lines global ctext commentend + set submodlog "git\\ log\\ --format='%h\\ %aN:\\ %s'\\ -100"
Do we want to respect the config option diff.submodule here? The -100 is chosen rather arbitrarily. Ideally we'd only walk to the previous entry?
+ 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
+ if {[catch {set bf [open "| sh -c cd\\ \"$f\"&&$submodlog" r]} err]} {Can we have $submodlog use the "git -C <path> command" option, then we could save the "cd &&" part, which might even save us from spawning a shell? Thanks, Stefan