This patchset contains: - a replacement of explicit recursive dir iteration at copy_or_link_directory for the dir-iterator API; - some refactoring and behaviour changes at local clone, mainly to take care of symlinks and hidden files at .git/objects; and - tests for this type of files Changes since v3 includes: - Addressed Duy's and Ævar's comments and suggestions in v2, including but not limited to: - Add patch to replace strcmp for fspathcmp - Code comments refactoring - Unident snippet at mkdir_if_missing - Made t5604 added subtests pass under GIT_TEST_MULTI_PACK_INDEX=1 and GIT_TEST_COMMIT_GRAPH=1 - Re-implemented patch 2 with linkat(), to be simpler and have a safer behaviour when clonning repos with symlinks at .git/objects - Split first patch's tests into patches 1 and 2, tweaked it a little to reflect the previous item changes, and replaced some usages of the string 'link' for 'symlink' just to avoid confusion with 'hardlinks' which are also known just by 'links'. v3: https://public-inbox.org/git/20190226122829.19178-1-avarab@xxxxxxxxx/ Matheus Tavares (6): clone: better handle symlinked files at .git/objects/ dir-iterator: add flags parameter to dir_iterator_begin clone: copy hidden paths at local clone clone: extract function from copy_or_link_directory clone: use dir-iterator to avoid explicit dir traversal clone: Replace strcmp by fspathcmp Ævar Arnfjörð Bjarmason (1): clone: test for our behavior on odd objects/* content builtin/clone.c | 72 ++++++++++--------- dir-iterator.c | 28 +++++++- dir-iterator.h | 39 +++++++++-- refs/files-backend.c | 2 +- t/t5604-clone-reference.sh | 137 +++++++++++++++++++++++++++++++++++++ 5 files changed, 236 insertions(+), 42 deletions(-) -- 2.20.1