Re: Re* git clean --exclude broken?
- From
- Pete Wyckoff <pw@padd.com>
- Date
- Aug 28, 2011, 12:31 UTC
- Message-ID
- <20110828123122.GA10940@arf.padd.com>
- In-Reply-To
- <7v62li9hk5.fsf@alter.siamese.dyndns.org>
gitster@pobox.com wrote on Sat, 27 Aug 2011 23:27 -0700:
Show 69 quoted lines
> Pete Wyckoff <pw@padd.com> writes:
>
> >> 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)
> This works, thanks. It is a confusing set of options, but we need them all. I couldn't think of a better way to describe how they interact.
-- Pete