* [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 2/2] gitk: add an option to run gitk on an item in the file list
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
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.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
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
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 2/2] gitk: add an option to run gitk on an item in the file list Alex Riesen
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).