diff options
author | Jens Lehmann <Jens.Lehmann@web.de> | 2009-10-28 12:40:45 +0100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2009-11-03 22:28:42 +1100 |
commit | 5c838d23aa02476cfe91b0eea047b6d5857da770 (patch) | |
tree | 5aacf98cbdcf9a121e18fbd25f0b1db2140d5ed0 | |
parent | gitk: Fix diffing committed -> staged (typo in diffcmd) (diff) | |
download | tgif-5c838d23aa02476cfe91b0eea047b6d5857da770.tar.xz |
gitk: Use the --submodule option for displaying diffs when available
When displaying diffs in a submodule, this makes gitk display the
headlines of the commits being diffed, instead of just showing
not-quite-helpful SHA-1 pairs, if the underlying git installation
supports this. That makes it much easier to evaluate the changes, as
it eliminates the need to start a gitk inside the submodule and use
the superprojects hashes there to find out what the commits are about.
Since the --submodule option of git diff is new in git version 1.6.6,
this only uses the --submodule option when a git version of 1.6.6 or
higher is detected.
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rwxr-xr-x | gitk | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -7344,7 +7344,11 @@ proc getblobdiffs {ids} { if {[package vcompare $git_version "1.6.1"] >= 0} { set textconv "--textconv" } - set cmd [diffcmd $ids "-p $textconv -C --cc --no-commit-id -U$diffcontext"] + set submodule {} + if {[package vcompare $git_version "1.6.6"] >= 0} { + set submodule "--submodule" + } + set cmd [diffcmd $ids "-p $textconv $submodule -C --cc --no-commit-id -U$diffcontext"] if {$ignorespace} { append cmd " -w" } @@ -7482,6 +7486,21 @@ proc getblobdiffline {bdf ids} { set diffnparents [expr {[string length $ats] - 1}] set diffinhdr 0 + } elseif {![string compare -length 10 "Submodule " $line]} { + # start of a new submodule + if {[string compare [$ctext get "end - 4c" end] "\n \n\n"]} { + $ctext insert end "\n"; # Add newline after commit message + } + set curdiffstart [$ctext index "end - 1c"] + lappend ctext_file_names "" + set fname [string range $line 10 [expr [string last " " $line] - 1]] + lappend ctext_file_lines $fname + makediffhdr $fname $ids + $ctext insert end "\n$line\n" filesep + } elseif {![string compare -length 3 " >" $line]} { + $ctext insert end "$line\n" dresult + } elseif {![string compare -length 3 " <" $line]} { + $ctext insert end "$line\n" d0 } elseif {$diffinhdr} { if {![string compare -length 12 "rename from " $line]} { set fname [string range $line [expr 6 + [string first " from " $line] ] end] |