I've marked this RFC since there are known problems here. v2 of the patch can be found here: http://thread.gmane.org/gmane.comp.version-control.git/267023/focus=267023 Changes in v3: * Created setup.c:read_gitfile_gently to use for submodule probing * Cleanup of some tests by use of test_commit helper * Added more tests of cleaning in the presence of submodules * Reversed expectation of test for cleaning nested bare repos. They are now expected to be cleaned. Added one more case. * Fixed bug where submodules could be cleaned by using new read_gitfile_gently for additional submodule check in clean.c:is_git_repository * Attempt to change behavior of patch implementation to clean bare repositories (only partially successful) * Reworded commit message of the performance fix commit Known Problems: * Unsure about the setup.c:read_gitfile refactor, feels a bit messy? * Potentially a missing sanity check of git file size in setup.c:read_gitfile_gently_or_non_gently * We still get a behavioral change for empty bare repositories placed in a ".git" directory. Currently we clean empty bare repos in a .git folder but not non-empty one. After this patch we won't clean either. How serious is this? Is there an easy fix (preferebly to clean all bare repositories)? * Still have issues in the performance tests, see comments from Thomas Gummerer on v2 Thanks to Junio C Hamano and Jeff King for spotting fundamental problems in v2 and suggesting a solution. Erik Elfström (4): setup: add gentle version of read_gitfile t7300: add tests to document behavior of clean and nested git p7300: add performance tests for clean clean: improve performance when removing lots of directories builtin/clean.c | 25 ++++++++-- cache.h | 1 + setup.c | 94 ++++++++++++++++++++++++++++--------- t/perf/p7300-clean.sh | 37 +++++++++++++++ t/t7300-clean.sh | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 257 insertions(+), 25 deletions(-) create mode 100755 t/perf/p7300-clean.sh -- 2.4.0.rc2.5.g2871d5e -- 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