зеркало из https://github.com/microsoft/git.git
clean: unreadable directory may still be rmdir-able if it is empty
As a last ditch effort, try rmdir(2) when we cannot read the directory to be removed. It may be an empty directory that we can remove without any permission, as long as we can modify its parent directory. Noticed by Linus. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
2352570bf4
Коммит
0235017eaf
2
dir.c
2
dir.c
|
@ -1088,7 +1088,7 @@ int remove_dir_recursively(struct strbuf *path, int flag)
|
||||||
|
|
||||||
dir = opendir(path->buf);
|
dir = opendir(path->buf);
|
||||||
if (!dir)
|
if (!dir)
|
||||||
return -1;
|
return rmdir(path->buf);
|
||||||
if (path->buf[original_len - 1] != '/')
|
if (path->buf[original_len - 1] != '/')
|
||||||
strbuf_addch(path, '/');
|
strbuf_addch(path, '/');
|
||||||
|
|
||||||
|
|
|
@ -453,4 +453,11 @@ test_expect_success 'git clean -e' '
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success SANITY 'git clean -d with an unreadable empty directory' '
|
||||||
|
mkdir foo &&
|
||||||
|
chmod a= foo &&
|
||||||
|
git clean -dfx foo &&
|
||||||
|
! test -d foo
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче