]> git.ipfire.org Git - thirdparty/git.git/commit - dir.c
clean: preserve nested git worktree in subdirectories
authorJunio C Hamano <gitster@pobox.com>
Thu, 15 Mar 2012 08:04:12 +0000 (01:04 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 15 Mar 2012 18:25:34 +0000 (11:25 -0700)
commitae2f203ef7be7b33ff5ec61646c8662363eccd62
treefc2d3717e6762b96a6b0d2c4adf6aad5e38a9cb6
parentc844a8035617a602015d74ce329ee88f9b003bf9
clean: preserve nested git worktree in subdirectories

remove_dir_recursively() has a check to avoid removing the directory it
was asked to remove without recursing into it and report success when the
directory is the top level of a working tree of a nested git repository,
to protect such a repository from "clean -f" (without double -f). If a
working tree of a nested git repository is in a subdirectory of a toplevel
project, however, this protection did not apply by mistake; we forgot to
pass the REMOVE_DIR_KEEP_NESTED_GIT down to the recursive removal
codepath.

This requires us to also teach the higher level not to remove the
directory it is asked to remove, when the recursed invocation did not
remove the directory it was asked to remove due to a nested git
repository, as it is not an error to leave the parent directories of such
a nested repository.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
dir.c
t/t7300-clean.sh