Documentation: clarify "git clean -e <pattern>"
The current explanation of -e can be misread as allowing the user to say I know 'git clean -XYZ' (substitute -XYZ with any option and/or parameter) will remove paths A, B, and C, and I want them all removed except for paths matching this pattern by adding '-e C' to the same command line, i.e. 'git clean -e C -XYZ'. But that is not what this option does. It augments the set of ignore rules from the command line, just like the same "-e <pattern>" argument does with the "ls-files" command (the user could probably pass "-e \!C" to tell the command to clean everything the command would normally remove, except for C). Also error out when both -x and -e are given with an explanation of what -e means---it is a symptom of misunderstanding what -e does. It also fixes small style nit in the parameter to add_exclude() call. The current code only works because EXC_CMDL happens to be defined as 0. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ccef6048cd
commit
b6194678b0
@ -47,12 +47,14 @@ OPTIONS
|
|||||||
|
|
||||||
-e <pattern>::
|
-e <pattern>::
|
||||||
--exclude=<pattern>::
|
--exclude=<pattern>::
|
||||||
Specify special exceptions to not be cleaned. Each <pattern> is
|
In addition to those found in .gitignore (per directory) and
|
||||||
the same form as in $GIT_DIR/info/excludes and this option can be
|
$GIT_DIR/info/exclude, also consider these patterns to be in the
|
||||||
given multiple times.
|
set of the ignore rules in effect.
|
||||||
|
|
||||||
-x::
|
-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
|
files, including build products. This can be used (possibly in
|
||||||
conjunction with 'git reset') to create a pristine
|
conjunction with 'git reset') to create a pristine
|
||||||
working directory to test a clean build.
|
working directory to test a clean build.
|
||||||
|
@ -54,7 +54,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
|
|||||||
OPT_BOOLEAN('d', NULL, &remove_directories,
|
OPT_BOOLEAN('d', NULL, &remove_directories,
|
||||||
"remove whole directories"),
|
"remove whole directories"),
|
||||||
{ OPTION_CALLBACK, 'e', "exclude", &exclude_list, "pattern",
|
{ OPTION_CALLBACK, 'e', "exclude", &exclude_list, "pattern",
|
||||||
"exclude <pattern>", PARSE_OPT_NONEG, exclude_cb },
|
"add <pattern> to ignore rules", PARSE_OPT_NONEG, exclude_cb },
|
||||||
OPT_BOOLEAN('x', NULL, &ignored, "remove ignored files, too"),
|
OPT_BOOLEAN('x', NULL, &ignored, "remove ignored files, too"),
|
||||||
OPT_BOOLEAN('X', NULL, &ignored_only,
|
OPT_BOOLEAN('X', NULL, &ignored_only,
|
||||||
"remove only ignored files"),
|
"remove only ignored files"),
|
||||||
@ -98,7 +98,8 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
|
|||||||
setup_standard_excludes(&dir);
|
setup_standard_excludes(&dir);
|
||||||
|
|
||||||
for (i = 0; i < exclude_list.nr; i++)
|
for (i = 0; i < exclude_list.nr; i++)
|
||||||
add_exclude(exclude_list.items[i].string, "", 0, dir.exclude_list);
|
add_exclude(exclude_list.items[i].string, "", 0,
|
||||||
|
&dir.exclude_list[EXC_CMDL]);
|
||||||
|
|
||||||
pathspec = get_pathspec(prefix, argv);
|
pathspec = get_pathspec(prefix, argv);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user