clone: copy hidden paths at local clone
Make the copy_or_link_directory function no longer skip hidden directories. This function, used to copy .git/objects, currently skips all hidden directories but not hidden files, which is an odd behaviour. The reason for that could be unintentional: probably the intention was to skip '.' and '..' only but it ended up accidentally skipping all directories starting with '.'. Besides being more natural, the new behaviour is more permissive to the user. Also adjust tests to reflect this behaviour change. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Co-authored-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
fa1da7d2ee
commit
68c7c59cf2
@ -427,7 +427,7 @@ static void copy_or_link_directory(struct strbuf *src, struct strbuf *dest,
|
||||
continue;
|
||||
}
|
||||
if (S_ISDIR(buf.st_mode)) {
|
||||
if (de->d_name[0] != '.')
|
||||
if (!is_dot_or_dotdot(de->d_name))
|
||||
copy_or_link_directory(src, dest,
|
||||
src_repo, src_baselen);
|
||||
continue;
|
||||
|
@ -247,16 +247,25 @@ test_expect_success 'clone a repo with garbage in objects/*' '
|
||||
done &&
|
||||
find S-* -name "*some*" | sort >actual &&
|
||||
cat >expected <<-EOF &&
|
||||
S--dissociate/.git/objects/.some-hidden-dir
|
||||
S--dissociate/.git/objects/.some-hidden-dir/.some-dot-file
|
||||
S--dissociate/.git/objects/.some-hidden-dir/some-file
|
||||
S--dissociate/.git/objects/.some-hidden-file
|
||||
S--dissociate/.git/objects/some-dir
|
||||
S--dissociate/.git/objects/some-dir/.some-dot-file
|
||||
S--dissociate/.git/objects/some-dir/some-file
|
||||
S--dissociate/.git/objects/some-file
|
||||
S--local/.git/objects/.some-hidden-dir
|
||||
S--local/.git/objects/.some-hidden-dir/.some-dot-file
|
||||
S--local/.git/objects/.some-hidden-dir/some-file
|
||||
S--local/.git/objects/.some-hidden-file
|
||||
S--local/.git/objects/some-dir
|
||||
S--local/.git/objects/some-dir/.some-dot-file
|
||||
S--local/.git/objects/some-dir/some-file
|
||||
S--local/.git/objects/some-file
|
||||
S--no-hardlinks/.git/objects/.some-hidden-dir
|
||||
S--no-hardlinks/.git/objects/.some-hidden-dir/.some-dot-file
|
||||
S--no-hardlinks/.git/objects/.some-hidden-dir/some-file
|
||||
S--no-hardlinks/.git/objects/.some-hidden-file
|
||||
S--no-hardlinks/.git/objects/some-dir
|
||||
S--no-hardlinks/.git/objects/some-dir/.some-dot-file
|
||||
|
Loading…
Reference in New Issue
Block a user