git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Re* git clean --exclude broken?

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 28, 2011, 06:27 UTC
Message-ID
<7v62li9hk5.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20110827235458.GA8124@arf.padd.com>
Pete Wyckoff <pw@padd.com> writes:
Show 29 quoted lines
>> diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt
>> index 974e04e..a7a18e3 100644
>> --- a/Documentation/git-clean.txt
>> +++ b/Documentation/git-clean.txt
>> @@ -47,9 +47,9 @@ OPTIONS
>>  
>>  -e <pattern>::
>>  --exclude=<pattern>::
>> -	Specify special exceptions to not be cleaned.  Each <pattern> is
>> -	the same form as in $GIT_DIR/info/excludes and this option can be
>> -	given multiple times.
>> +	In addition to what are found in .gitignore (per directory) and
>> +	$GIT_DIR/info/exclude, also consider these patterns to be in the
>> +	set of the ignore rules in effect.
>>  
>>  -x::
>>  	Don't use the ignore rules.  This allows removing all untracked
>> diff --git a/builtin/clean.c b/builtin/clean.c
>> index 75697f7..3782718 100644
>> --- a/builtin/clean.c
>> +++ b/builtin/clean.c
>> @@ -76,6 +76,8 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
>>  
>>  	if (ignored && ignored_only)
>>  		die(_("-x and -X cannot be used together"));
>> +	if (ignored && exclude_list.nr)
>> +		die(_("adding exclude with -e and ignoring it with -x is crazy"));
>
> This breaks one of my use cases for git clean.
The description of '-x' needs to be also updated to reflect what it does.
How about this on top?
 Documentation/git-clean.txt |    4 +++-
 builtin/clean.c             |    2 --
 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt
index b49674f..79fb984 100644
--- a/Documentation/git-clean.txt
+++ b/Documentation/git-clean.txt
@@ -52,7 +52,9 @@ OPTIONS
 	set of the ignore rules in effect.
 
 -x::
-	Don't use the ignore rules.  This allows removing all untracked
+	Don't use the standard ignore rules read from .gitignore (per
+	directory) and $GIT_DIR/info/exclude, but do still use the ignore
+	rules given with `-e` options.  This allows removing all untracked
 	files, including build products.  This can be used (possibly in
 	conjunction with 'git reset') to create a pristine
 	working directory to test a clean build.
diff --git a/builtin/clean.c b/builtin/clean.c
index 7fcbf87..0c7b3d0 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -76,8 +76,6 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
 
 	if (ignored && ignored_only)
 		die(_("-x and -X cannot be used together"));
-	if (ignored && exclude_list.nr)
-		die(_("adding exclude with -e and ignoring it with -x is crazy"));
 
 	if (!show_only && !force) {
 		if (config_set)
Previous: Pete WyckoffNext: Pete Wyckoff
Message 10 of 11 in “git clean --exclude broken?”
  1. Todd RinaldoAug 24, 2011
  2. Junio C HamanoAug 24, 2011
  3. Todd RinaldoAug 24, 2011
  4. Junio C HamanoAug 25, 2011
  5. Re* git clean --exclude broken?Junio C Hamano, Aug 25, 2011
  6. Michael SchubertAug 25, 2011
  7. Junio C HamanoAug 25, 2011
  8. Thomas RastAug 26, 2011
  9. Pete WyckoffAug 27, 2011
  10. Junio C HamanoAug 28, 2011
  11. Pete WyckoffAug 28, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.