git-clean: honor core.excludesfile
git-clean did not honor core.excludesfile configuration variable, although some other commands such as git-add and git-status did. Fix this inconsistency. Original report and patch from Shun'ichi Fuji. Rewritten by me and bugs and tests are mine. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7f55cf451c
commit
b57321f57b
@ -75,15 +75,22 @@ esac
|
||||
|
||||
if [ -z "$ignored" ]; then
|
||||
excl="--exclude-per-directory=.gitignore"
|
||||
excl_info= excludes_file=
|
||||
if [ -f "$GIT_DIR/info/exclude" ]; then
|
||||
excl_info="--exclude-from=$GIT_DIR/info/exclude"
|
||||
fi
|
||||
if cfg_excl=$(git config core.excludesfile) && test -f "$cfg_excl"
|
||||
then
|
||||
excludes_file="--exclude-from=$cfg_excl"
|
||||
fi
|
||||
if [ "$ignoredonly" ]; then
|
||||
excl="$excl --ignored"
|
||||
fi
|
||||
fi
|
||||
|
||||
git ls-files --others --directory $excl ${excl_info:+"$excl_info"} -- "$@" |
|
||||
git ls-files --others --directory \
|
||||
$excl ${excl_info:+"$excl_info"} ${excludes_file:+"$excludes_file"} \
|
||||
-- "$@" |
|
||||
while read -r file; do
|
||||
if [ -d "$file" -a ! -L "$file" ]; then
|
||||
if [ -z "$cleandir" ]; then
|
||||
|
@ -177,4 +177,15 @@ test_expect_success 'clean.requireForce and -f' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'core.excludesfile' '
|
||||
|
||||
echo excludes >excludes &&
|
||||
echo included >included &&
|
||||
git config core.excludesfile excludes &&
|
||||
output=$(git clean -n excludes included 2>&1) &&
|
||||
expr "$output" : ".*included" >/dev/null &&
|
||||
! expr "$output" : ".*excludes" >/dev/null
|
||||
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user