Dan McGee <dpmcgee@xxxxxxxxx> writes: > This was seen to happen in some invocations of git-log with a filtered > path. Only do it if we are not recursively descending, as otherwise we > mess with copy and rename detection in full tree moves. There is no code that corresponds to your "Only do it..." description in your patch, though. The existing code already takes care of that part with or without your patch, no? > diff --git a/tree-diff.c b/tree-diff.c > index 76f83fc..ab90f1a 100644 > --- a/tree-diff.c > +++ b/tree-diff.c > @@ -286,6 +286,9 @@ int diff_tree_sha1(const unsigned char *old, const unsigned char *new, const cha > unsigned long size1, size2; > int retval; > > + if (!DIFF_OPT_TST(opt, FIND_COPIES_HARDER) && !hashcmp(old, new)) > + return 0; > + I am very curious why this patch makes a difference; doesn't an existing test in compare_tree_entry() oalready cull extra recursion? There is: if (!DIFF_OPT_TST(opt, FIND_COPIES_HARDER) && !hashcmp(sha1, sha2) && mode1 == mode2) return 0; before a recursive call to diff_tree_sha1() to dig deeper. -- 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