Merge branch 'jc/add-ignore-removal'

Introduce "--ignore-removal" as a synonym to "--no-all" for "git
add", and improve the 2.0 migration warning with it.

* jc/add-ignore-removal:
  git add: rephrase -A/--no-all warning
  git add: --ignore-removal is a better named --no-all
This commit is contained in:
Junio C Hamano 2013-04-26 15:28:09 -07:00
commit 838f9c1eb6
2 changed files with 23 additions and 10 deletions

View File

@ -9,9 +9,9 @@ SYNOPSIS
-------- --------
[verse] [verse]
'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p] 'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]
[--edit | -e] [--[no-]all | [--update | -u]] [--intent-to-add | -N] [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
[--refresh] [--ignore-errors] [--ignore-missing] [--] [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
[<pathspec>...] [--] [<pathspec>...]
DESCRIPTION DESCRIPTION
----------- -----------
@ -111,6 +111,7 @@ of Git, hence the form without <pathspec> should not be used.
-A:: -A::
--all:: --all::
--no-ignore-removal::
Update the index not only where the working tree has a file Update the index not only where the working tree has a file
matching <pathspec> but also where the index already has an matching <pathspec> but also where the index already has an
entry. This adds, modifies, and removes index entries to entry. This adds, modifies, and removes index entries to
@ -122,6 +123,7 @@ and its subdirectories. This default will change in a future version
of Git, hence the form without <pathspec> should not be used. of Git, hence the form without <pathspec> should not be used.
--no-all:: --no-all::
--ignore-removal::
Update the index by adding new files that are unknown to the Update the index by adding new files that are unknown to the
index and files modified in the working tree, but ignore index and files modified in the working tree, but ignore
files that have been removed from the working tree. This 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.
This option is primarily to help the current users of Git, whose This option is primarily to help the current users of Git, whose
"git add <pathspec>..." ignores removed files. In future versions "git add <pathspec>..." ignores removed files. In future versions
of Git, "git add <pathspec>..." will be a synonym to "git add -A of Git, "git add <pathspec>..." will be a synonym to "git add -A
<pathspec>..." and "git add --no-all <pathspec>..." will behave like <pathspec>..." and "git add --ignore-removal <pathspec>..." will behave like
today's "git add <pathspec>...", ignoring removed files. today's "git add <pathspec>...", ignoring removed files.
-N:: -N::

View File

@ -97,13 +97,13 @@ static int fix_unmerged_status(struct diff_filepair *p,
} }
static const char *add_would_remove_warning = N_( static const char *add_would_remove_warning = N_(
"You ran 'git add' with neither '-A (--all)' or '--no-all', whose\n" "You ran 'git add' with neither '-A (--all)' or '--ignore-removal',\n"
"behaviour will change in Git 2.0 with respect to paths you removed from\n" "whose behaviour will change in Git 2.0 with respect to paths you removed.\n"
"your working tree. Paths like '%s' that are\n" "Paths like '%s' that are\n"
"removed are ignored with this version of Git.\n" "removed from your working tree are ignored with this version of Git.\n"
"\n" "\n"
"* 'git add --no-all <pathspec>', which is the current default, ignores\n" "* 'git add --ignore-removal <pathspec>', which is the current default,\n"
" paths you removed from your working tree.\n" " ignores paths you removed from your working tree.\n"
"\n" "\n"
"* 'git add --all <pathspec>' will let you also record the removals.\n" "* 'git add --all <pathspec>' will let you also record the removals.\n"
"\n" "\n"
@ -382,6 +382,13 @@ static int ignore_add_errors, intent_to_add, ignore_missing;
static int addremove = ADDREMOVE_DEFAULT; static int addremove = ADDREMOVE_DEFAULT;
static int addremove_explicit = -1; /* unspecified */ static int addremove_explicit = -1; /* unspecified */
static int ignore_removal_cb(const struct option *opt, const char *arg, int unset)
{
/* if we are told to ignore, we are not adding removals */
*(int *)opt->value = !unset ? 0 : 1;
return 0;
}
static struct option builtin_add_options[] = { static struct option builtin_add_options[] = {
OPT__DRY_RUN(&show_only, N_("dry run")), OPT__DRY_RUN(&show_only, N_("dry run")),
OPT__VERBOSE(&verbose, N_("be verbose")), OPT__VERBOSE(&verbose, N_("be verbose")),
@ -393,6 +400,10 @@ static struct option builtin_add_options[] = {
OPT_BOOL('u', "update", &take_worktree_changes, N_("update tracked files")), OPT_BOOL('u', "update", &take_worktree_changes, N_("update tracked files")),
OPT_BOOL('N', "intent-to-add", &intent_to_add, N_("record only the fact that the path will be added later")), OPT_BOOL('N', "intent-to-add", &intent_to_add, N_("record only the fact that the path will be added later")),
OPT_BOOL('A', "all", &addremove_explicit, N_("add changes from all tracked and untracked files")), OPT_BOOL('A', "all", &addremove_explicit, N_("add changes from all tracked and untracked files")),
{ OPTION_CALLBACK, 0, "ignore-removal", &addremove_explicit,
NULL /* takes no arguments */,
N_("ignore paths removed in the working tree (same as --no-all)"),
PARSE_OPT_NOARG, ignore_removal_cb },
OPT_BOOL( 0 , "refresh", &refresh_only, N_("don't add, only refresh the index")), OPT_BOOL( 0 , "refresh", &refresh_only, N_("don't add, only refresh the index")),
OPT_BOOL( 0 , "ignore-errors", &ignore_add_errors, N_("just skip files which cannot be added because of errors")), OPT_BOOL( 0 , "ignore-errors", &ignore_add_errors, N_("just skip files which cannot be added because of errors")),
OPT_BOOL( 0 , "ignore-missing", &ignore_missing, N_("check if - even missing - files are ignored in dry run")), OPT_BOOL( 0 , "ignore-missing", &ignore_missing, N_("check if - even missing - files are ignored in dry run")),