On Tue, May 8, 2018 at 5:22 AM, Alex Riesen <alexander.riesen@xxxxxxxxxxx> wrote: > From: Alex Riesen <raa.lkml@xxxxxxxxx> > > 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? > > This will make it show first arbitrarily chosen number of commits, > which might be only marginally better. > > Signed-off-by: Alex Riesen <raa.lkml@xxxxxxxxx> > --- > 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