Hello up there, I'm still trying to speedup combined-diff to be not so slow, to be able to realistically use it in my readonly filesystem for git archives. In the first part[1], we optimized paths intersections, but combined-diff still remained slow, because internally it was computing huge diffs, even for small, or empty output. This time, here goes paths scanning rework, which results in significant combine-diff speedup. Please apply. Thanks beforehand, Kirill P.S. the code depends on ks/diff-c-with-diff-order [1] http://permalink.gmane.org/gmane.comp.version-control.git/240713 Kirill Smelkov (8): fixup! combine_diff: simplify intersect_paths() further tests: add checking that combine-diff emits only correct paths tree-diff: no need to manually verify that there is no mode change for a path tree-diff: no need to pass match to skip_uninteresting() combine-diff: move show_log_first logic/action out of paths scanning combine-diff: Move changed-paths scanning logic into its own function combine-diff: Fast changed-to-all-parents paths scanning combine-diff: bail out early, if num_paths=0 combine-diff.c | 215 +++++++++++++++----- diff.c | 1 + diff.h | 6 + t/t4057-diff-combined-paths.sh | 106 ++++++++++ tree-diff.c | 442 +++++++++++++++++++++++++++++++++++++++-- 5 files changed, 696 insertions(+), 74 deletions(-) create mode 100755 t/t4057-diff-combined-paths.sh -- 1.9.rc1.181.g641f458 -- 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