Mark Blakeney <markb@xxxxxxxxxx> writes: > ... why does gitk (usually) not show the subset list of files affected > when you give it a path? > > E.g. If I am in a src dir then "gitk ." does not list files. Neither does "gitk > $PWD" nor "gitk ../src". However "cd ..; git src" does list files!? Paul, I do not read Tcl very well, but it appears that path_filter procedure is at fault. The call chain involved in this seems to be: gettreediffs - arranges gettreediffline to be fed output from "diff-tree $commit ." -> gettreediffline - finds the path (note that diff output is _always_ relative to the top of the work tree) from the patch; - calls path_filter with $vfilelimit($curview) and each filename In this case, the $vfilelimit($curview) is "." (dot) -> path_filter - compares strings in $filter and the $name; in this case, $filter is a dot "." and $name begins with "src/" I see at least two problems in path_filter used this way: - A dot "." never would match anything from "diff-tree" (or any "diff" variant) after stripping a/ and b/ prefix. gitk should prefix the current directory to each of the pathspec from command line (run "rev-parse --show-prefix" to learn where you are). - There is another callsite to path_filter for filtering output from "ls-files -u". But the output from "ls-files" is relative to the cwd by default. gitk should probably run it with --full-name option, so that it would get the same semantics as "diff" output. It _might_ be the easiest to do an equivalent of (sorry, I do not talk Tcl so this is in shell): prefix=$(git rev-parse --show-prefix) if test -n "$prefix" then cd $(git rev-parse --show-cdup) fi and then prepend prefix to all the pathspecs you would use from the command line before doing anything else. This "prepending" obviously need to be aware of the ".", ".." and friends. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html