summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-04-26 15:28:09 -0700
committerJunio C Hamano <gitster@pobox.com>2013-04-26 15:28:09 -0700
commit838f9c1eb69de6d98889bbdb4d66dfe37e156091 (patch)
tree482bdef0776b9b6618557160f76a496eaa8306f1
parent877ee9cc7eec7f1cf43d726f6a92c20fdfe83ca9 (diff)
parent4c7114308ea12de7b69a3b282881398212dec8dd (diff)
downloadgit-838f9c1eb69de6d98889bbdb4d66dfe37e156091.tar.gz
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
-rw-r--r--Documentation/git-add.txt10
-rw-r--r--builtin/add.c23
2 files changed, 23 insertions, 10 deletions
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index 5c501a299e..48754cbc67 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -9,9 +9,9 @@ SYNOPSIS
--------
[verse]
'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]
- [--edit | -e] [--[no-]all | [--update | -u]] [--intent-to-add | -N]
- [--refresh] [--ignore-errors] [--ignore-missing] [--]
- [<pathspec>...]
+ [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
+ [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
+ [--] [<pathspec>...]
DESCRIPTION
-----------
@@ -111,6 +111,7 @@ of Git, hence the form without <pathspec> should not be used.
-A::
--all::
+--no-ignore-removal::
Update the index not only where the working tree has a file
matching <pathspec> but also where the index already has an
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.
--no-all::
+--ignore-removal::
Update the index by adding new files that are unknown to the
index and files modified in the working tree, but ignore
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
"git add <pathspec>..." ignores removed files. In future versions
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.
-N::
diff --git a/builtin/add.c b/builtin/add.c
index 63df5f6938..f45d9d4865 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -97,13 +97,13 @@ static int fix_unmerged_status(struct diff_filepair *p,
}
static const char *add_would_remove_warning = N_(
- "You ran 'git add' with neither '-A (--all)' or '--no-all', whose\n"
-"behaviour will change in Git 2.0 with respect to paths you removed from\n"
-"your working tree. Paths like '%s' that are\n"
-"removed are ignored with this version of Git.\n"
+ "You ran 'git add' with neither '-A (--all)' or '--ignore-removal',\n"
+"whose behaviour will change in Git 2.0 with respect to paths you removed.\n"
+"Paths like '%s' that are\n"
+"removed from your working tree are ignored with this version of Git.\n"
"\n"
-"* 'git add --no-all <pathspec>', which is the current default, ignores\n"
-" paths you removed from your working tree.\n"
+"* 'git add --ignore-removal <pathspec>', which is the current default,\n"
+" ignores paths you removed from your working tree.\n"
"\n"
"* 'git add --all <pathspec>' will let you also record the removals.\n"
"\n"
@@ -382,6 +382,13 @@ static int ignore_add_errors, intent_to_add, ignore_missing;
static int addremove = ADDREMOVE_DEFAULT;
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[] = {
OPT__DRY_RUN(&show_only, N_("dry run")),
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('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")),
+ { 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 , "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")),