Thread (15 messages) flat view 15 messages, 3 authors, 2018-05-09

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help