gitk: Fix some bugs with path limiting in the diff display
authorPaul Mackerras <paulus@samba.org>
Tue, 23 Oct 2007 12:37:23 +0000 (22:37 +1000)
committerPaul Mackerras <paulus@samba.org>
Tue, 23 Oct 2007 12:37:23 +0000 (22:37 +1000)
First, we weren't putting "--" between the ids and the paths in the
git diff-tree/diff-index/diff-files command, so if there was a tag
and a file with the same name, we could get an ambiguity in the
command.  This puts the "--" in to make it clear that the paths are
paths.

Secondly, this implements the path limiting for merge diffs as well
as the normal 2-way diffs.

Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk

diff --git a/gitk b/gitk
index 0d3705c43c7f8767ef5811d0318aa08caeb7e219..f41e30207bac7b21ae4305e7e20a0d52abacbd84 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -4913,12 +4913,16 @@ proc mergediff {id l} {
     global diffmergeid diffopts mdifffd
     global diffids
     global parentlist
+    global limitdiffs viewfiles curview
 
     set diffmergeid $id
     set diffids $id
     # this doesn't seem to actually affect anything...
     set env(GIT_DIFF_OPTS) $diffopts
     set cmd [concat | git diff-tree --no-commit-id --cc $id]
+    if {$limitdiffs && $viewfiles($curview) ne {}} {
+       set cmd [concat $cmd -- $viewfiles($curview)]
+    }
     if {[catch {set mdf [open $cmd r]} err]} {
        error_popup "Error getting merge diffs: $err"
        return
@@ -5152,7 +5156,7 @@ proc getblobdiffs {ids} {
     set env(GIT_DIFF_OPTS) $diffopts
     set cmd [diffcmd $ids "-p -C --no-commit-id -U$diffcontext"]
     if {$limitdiffs && $viewfiles($curview) ne {}} {
-       set cmd [concat $cmd $viewfiles($curview)]
+       set cmd [concat $cmd -- $viewfiles($curview)]
     }
     if {[catch {set bdf [open $cmd r]} err]} {
        puts "error getting diffs: $err"