Original cover letter for context: https://lore.kernel.org/git/20221011232604.839941-1-calvinwan@xxxxxxxxxx/ Changes since v6 Added patches 4 and 5 to refactor out more functionality so that it is clear what changes my final patch makes. Since the large majority of the functionality between the serial and parallel implementation is now shared, I no longer remove the serial implementation. Added additional tests to verify setting parallelism doesn't alter output Calvin Wan (7): run-command: add duplicate_output_fn to run_processes_parallel_opts submodule: strbuf variable rename submodule: move status parsing into function submodule: refactor is_submodule_modified() diff-lib: refactor out diff_change logic diff-lib: refactor match_stat_with_submodule diff-lib: parallelize run_diff_files for submodules Documentation/config/submodule.txt | 12 ++ diff-lib.c | 133 +++++++++++--- run-command.c | 16 +- run-command.h | 27 +++ submodule.c | 274 ++++++++++++++++++++++++----- submodule.h | 9 + t/helper/test-run-command.c | 21 +++ t/t0061-run-command.sh | 39 ++++ t/t4027-diff-submodule.sh | 31 ++++ t/t7506-status-submodule.sh | 25 +++ 10 files changed, 508 insertions(+), 79 deletions(-) -- 2.39.1.519.gcb327c4b5f-goog