Jonathan Nieder <jrnieder@xxxxxxxxx> writes: > Junio C Hamano wrote: > >> And finally, pass the pathspec down through unpack_trees() to traverse_trees() >> callchain. > > In git versions which include the patch described above, the unchanged > subdir/hello.h shows up as a newly added file. Reverting that patch > (v1.7.7.1~22^2, diff-index: pass pathspec down to unpack-trees > machinery, 2011-08-29) makes "git diff HEAD" with wildcards work > again. I suspect that the particular change on the side branch predates Nguyen's effort to unify the pathspec semantics to teach the wildcard (i.e. not the traditional "prefix match") to the tree traversal code, but it is fairly late here, so I didn't check. I think the right fix is to update the logic that still assumes that a pathspec used for tree traversal is always prefix match when leaving the traversal early, and instead use the proper matching logic that knows that a wildcard pathspec needs to dig deeper into the tree regardless (I think the pathspec implementation used in "git grep" got this right, but please double check), so that we do not dig unnecessary subtrees when pathspecs are all prefixes, but still keep digging when there is a wildcard match. I suspect that it would lead to a fairly complete unification of the three implementations of pathspec matching logic and would allow us to also do something like "git log -- '*.h'" for free. -- 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