Skip to content

Commit

Permalink
git-gui: Use git diff --submodule when available
Browse files Browse the repository at this point in the history
Doing so is much faster and gives the same output.
Here are some numbers:

  $ time git submodule summary
  real	0m0.219s
  user	0m0.050s
  sys	0m0.111s

  $ time git diff --submodule
  real	0m0.012s
  user	0m0.003s
  sys	0m0.009s

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
  • Loading branch information
Jens Lehmann authored and Shawn O. Pearce committed Jan 23, 2010
1 parent 87cd09f commit a9ae14a
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions lib/diff.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,15 @@ proc start_show_diff {cont_info {add_opts {}}} {
}
}

if {[string match {160000 *} [lindex $s 2]]
|| [string match {160000 *} [lindex $s 3]]} {
set is_submodule_diff 1

if {[git-version >= "1.6.6"]} {
lappend cmd --submodule
}
}

lappend cmd -p
lappend cmd --no-color
if {$repo_config(gui.diffcontext) >= 1} {
Expand All @@ -296,9 +305,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
lappend cmd $path
}

if {[string match {160000 *} [lindex $s 2]]
|| [string match {160000 *} [lindex $s 3]]} {
set is_submodule_diff 1
if {$is_submodule_diff && [git-version < "1.6.6"]} {
if {$w eq $ui_index} {
set cmd [list submodule summary --cached -- $path]
} else {
Expand Down Expand Up @@ -387,7 +394,9 @@ proc read_diff {fd cont_info} {
}
} elseif {$is_submodule_diff} {
if {$line == ""} continue
if {[regexp {^\* } $line]} {
if {[regexp {^Submodule } $line]} {
set tags d_@
} elseif {[regexp {^\* } $line]} {
set line [string replace $line 0 1 {Submodule }]
set tags d_@
} else {
Expand Down

0 comments on commit a9ae14a

Please sign in to comment.