# [PATCH] git-clean: consider core.excludesfile

5 messages from 2007-11-14 to 2007-11-14. Participants: shunichi fuji, Junio C Hamano, Jakub Narebski, Johannes Sixt.
Thread: https://gitlist.dev/t/10862

## shunichi fuji, 2007-11-14 07:40

Subject: [PATCH] git-clean: consider core.excludesfile
Message-ID: <30046e3b0711132340y2c503dd4laea24b9b1c79a160@mail.gmail.com>
URL: https://gitlist.dev/e/30046e3b0711132340y2c503dd4laea24b9b1c79a160%40mail.gmail.com

```
git-clean used "git ls-files" and "git ls-files" don't consider
core.excludesfile.
i add few lines.

--- /usr/bin/git-clean  2007-11-14 08:26:20.000000000 +0900
+++ git-clean   2007-11-14 09:43:03.000000000 +0900
@@ -81,9 +81,14 @@
       if [ "$ignoredonly" ]; then
               excl="$excl --ignored"
       fi
+       core_excl="`git-config core.excludesfile`"
+       if [ -f "$core_excl" ]; then
+               core_excl_info="--exclude-from=$core_excl"
+       fi
 fi

-git ls-files --others --directory $excl ${excl_info:+"$excl_info"} -- "$@" |
+git ls-files --others --directory $excl ${excl_info:+"$excl_info"} \
+${core_excl_info:+"$core_excl_info"} -- "$@" |
 while read -r file; do
       if [ -d "$file" -a ! -L "$file" ]; then
               if [ -z "$cleandir" ]; then

```

## Junio C Hamano, 2007-11-14 08:58

Subject: Re: [PATCH] git-clean: consider core.excludesfile
Message-ID: <7v4pfpkxtf.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v4pfpkxtf.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <30046e3b0711132340y2c503dd4laea24b9b1c79a160@mail.gmail.com>

```
Thanks.  Sign-off please?

```

## Jakub Narebski, 2007-11-14 09:44

Subject: Re: [PATCH] git-clean: consider core.excludesfile
Message-ID: <fheg1c$eh8$1@ger.gmane.org>
URL: https://gitlist.dev/e/fheg1c%24eh8%241%40ger.gmane.org
In-Reply-To: <30046e3b0711132340y2c503dd4laea24b9b1c79a160@mail.gmail.com>

```
shunichi fuji wrote:

> +       core_excl="`git-config core.excludesfile`"

  +       core_excl="$(git-config core.excludesfile)"

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git

```

## Junio C Hamano, 2007-11-14 09:54

Subject: [PATCH] git-clean: honor core.excludesfile
Message-ID: <7vzlxhi23g.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vzlxhi23g.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <30046e3b0711132340y2c503dd4laea24b9b1c79a160@mail.gmail.com>

```
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>
---

 * How does this look?  It is customary here to add a test
   script to t/ to make sure a fix won't get broken in later
   changes, so I took the liberty of adding one myself.

 git-clean.sh     |    9 ++++++++-
 t/t7300-clean.sh |   11 +++++++++++
 2 files changed, 19 insertions(+), 1 deletions(-)

diff --git a/git-clean.sh b/git-clean.sh
index 4491738..931d1aa 100755
--- a/git-clean.sh
+++ b/git-clean.sh
@@ -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
diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh
index eb0847a..0ed4ae2 100755
--- a/t/t7300-clean.sh
+++ b/t/t7300-clean.sh
@@ -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

```

## Johannes Sixt, 2007-11-14 10:02

Subject: Re: [PATCH] git-clean: consider core.excludesfile
Message-ID: <473AC7D3.3000801@viscovery.net>
URL: https://gitlist.dev/e/473AC7D3.3000801%40viscovery.net
In-Reply-To: <30046e3b0711132340y2c503dd4laea24b9b1c79a160@mail.gmail.com>

```
shunichi fuji schrieb:
> --- /usr/bin/git-clean  2007-11-14 08:26:20.000000000 +0900
> +++ git-clean   2007-11-14 09:43:03.000000000 +0900
> @@ -81,9 +81,14 @@
>        if [ "$ignoredonly" ]; then
>                excl="$excl --ignored"
>        fi
> +       core_excl="`git-config core.excludesfile`"

Please make this

	core_excl=$(git-config core.excludesfile)

-- Hannes

```
