git add: --ignore-removal is a better named --no-all

In the historical context of "git add --all ." that pays attention to "all kinds of changes" (implying "without ignoring removals"), the option to countermand it "--no-all" may have made sense, but because we will be making "--all" the default when a pathspec is given, it makes more sense to rename the option to a more explicit "--ignore-removal". The "--all" option naturally becomes its negation, "--no-ignore-removal". Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Apr 22, 2013 at 13:29 UTC 9f60f49b9222f9200e688a64cd80610305b03cc5
2 files changed +17 -4
Documentation/git-add.txt
+6 -4
@@ -9,9 +9,9 @@ SYNOPSIS
9 --------
10 [verse]
11 'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]
12 - [--edit | -e] [--[no-]all | [--update | -u]] [--intent-to-add | -N]
13 - [--refresh] [--ignore-errors] [--ignore-missing] [--]
14 - [<pathspec>...]
12 + [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
13 + [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
14 + [--] [<pathspec>...]
15
16 DESCRIPTION
17 -----------
@@ -111,6 +111,7 @@ of Git, hence the form without <pathspec> should not be used.
111
112 -A::
113 --all::
114 +--no-ignore-removal::
115 Update the index not only where the working tree has a file
116 matching <pathspec> but also where the index already has an
117 entry. This adds, modifies, and removes index entries to
@@ -122,6 +123,7 @@ and its subdirectories. This default will change in a future version
123 of Git, hence the form without <pathspec> should not be used.
124
125 --no-all::
126 +--ignore-removal::
127 Update the index by adding new files that are unknown to the
128 index and files modified in the working tree, but ignore
129 files that have been removed from the working tree. This
@@ -130,7 +132,7 @@ of Git, hence the form without <pathspec> should not be used.
132 This option is primarily to help the current users of Git, whose
133 "git add <pathspec>..." ignores removed files. In future versions
134 of Git, "git add <pathspec>..." will be a synonym to "git add -A
133 -<pathspec>..." and "git add --no-all <pathspec>..." will behave like
135 +<pathspec>..." and "git add --ignore-removal <pathspec>..." will behave like
136 today's "git add <pathspec>...", ignoring removed files.
137
138 -N::
builtin/add.c
+11
@@ -382,6 +382,13 @@ static int ignore_add_errors, intent_to_add, ignore_missing;
382 static int addremove = ADDREMOVE_DEFAULT;
383 static int addremove_explicit = -1; /* unspecified */
384
385 +static int ignore_removal_cb(const struct option *opt, const char *arg, int unset)
386 +{
387 + /* if we are told to ignore, we are not adding removals */
388 + *(int *)opt->value = !unset ? 0 : 1;
389 + return 0;
390 +}
391 +
392 static struct option builtin_add_options[] = {
393 OPT__DRY_RUN(&show_only, N_("dry run")),
394 OPT__VERBOSE(&verbose, N_("be verbose")),
@@ -393,6 +400,10 @@ static struct option builtin_add_options[] = {
400 OPT_BOOL('u', "update", &take_worktree_changes, N_("update tracked files")),
401 OPT_BOOL('N', "intent-to-add", &intent_to_add, N_("record only the fact that the path will be added later")),
402 OPT_BOOL('A', "all", &addremove_explicit, N_("add changes from all tracked and untracked files")),
403 + { OPTION_CALLBACK, 0, "ignore-removal", &addremove_explicit,
404 + NULL /* takes no arguments */,
405 + N_("ignore paths removed in the working tree (same as --no-all)"),
406 + PARSE_OPT_NOARG, ignore_removal_cb },
407 OPT_BOOL( 0 , "refresh", &refresh_only, N_("don't add, only refresh the index")),
408 OPT_BOOL( 0 , "ignore-errors", &ignore_add_errors, N_("just skip files which cannot be added because of errors")),
409 OPT_BOOL( 0 , "ignore-missing", &ignore_missing, N_("check if - even missing - files are ignored in dry run")),