Subject: Re: [PATCH 2/2] Add test for git clean -e.

From: Junio C Hamano <[email-masked]>
Date: Tue, 20 Jul 2010 13:34:21 -0700

Jared Hance <[email-masked]> writes:

> Signed-off-by: Jared Hance <[email-masked]>
> ---
>  t/t7300-clean.sh |   16 ++++++++++++++++
>  1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh
> index 7d8ed68..3a43571 100755
> --- a/t/t7300-clean.sh
> +++ b/t/t7300-clean.sh
> @@ -438,4 +438,20 @@ test_expect_success 'force removal of nested git work tree' '
>  	! test -d bar
>  '
>  
> +test_expect_success 'git clean -e' '
> +	rm -fr repo &&
> +	mkdir repo &&
> +	(
> +		cd repo &&
> +		git init &&
> +		touch 1 2 3 known &&
> +		git add known &&
> +		git clean -f -e 1 -e 2 &&
> +		test -e 1 &&
> +		test -e 2 &&
> +		! (test -e 3) &&
> +		test -e known
> +	)
> +'

This is a good start but it doesn't seem to test possible interactions
with entries in .gitignore file(s) in the working tree.  Do we care?

What should happen when a path "path":

 (1) is marked to be ignored in .gitignore and -e "path" is also given;

 (2) is marked not to be ignored (i.e. "!path") in .gitignore but -e
    "path" is given;

 (3) is marked to be ignored in .gitignore but -e "!path" is given;

 (4) is marked not to be ignored in .gitignore and -e "!path" is also
     given;

 (5) perhaps other combinations like "!path" in a/.gitignore, and -e "a/path"
     from the command line.

What does the code actually do?