Re: [PATCH 1/2] gitk: show part of submodule log instead of empty pane when listing trees
- From
Stefan Beller <sbeller@google.com>
- Date
- May 8, 2018, 17:07 UTC
- Message-ID
- <CAGZ79kYxZ43kJwS_odhNwCO2e_n-8JLNynAZj0+Hp3ugzYbqUg@mail.gmail.com>
- In-Reply-To
- <20180508122229.k3n3ccpa5g3g4dxa@pflmari>
On Tue, May 8, 2018 at 5:22 AM, Alex Riesen <alexander.riesen@cetitec.com> wrote:
Show 5 quoted lines
> From: Alex Riesen <raa.lkml@gmail.com> > > 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?
Show 31 quoted lines
>
> This will make it show first arbitrarily chosen number of commits,
> which might be only marginally better.
>
> Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
> ---
> 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?
Show 13 quoted lines
> + 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