@@ -97,13 +97,13 @@ static int fix_unmerged_status(struct diff_filepair *p,
97
97
}
98
98
99
99
static const char * add_would_remove_warning = N_ (
100
- "You ran 'git add' with neither '-A (--all)' or '--no-all', whose \n"
101
- "behaviour will change in Git 2.0 with respect to paths you removed from \n"
102
- "your working tree. Paths like '%s' that are\n"
103
- "removed are ignored with this version of Git.\n"
100
+ "You ran 'git add' with neither '-A (--all)' or '--ignore-removal', \n"
101
+ "whose behaviour will change in Git 2.0 with respect to paths you removed. \n"
102
+ "Paths like '%s' that are\n"
103
+ "removed from your working tree are ignored with this version of Git.\n"
104
104
"\n"
105
- "* 'git add --no-all <pathspec>', which is the current default, ignores \n"
106
- " paths you removed from your working tree.\n"
105
+ "* 'git add --ignore-removal <pathspec>', which is the current default,\n"
106
+ " ignores paths you removed from your working tree.\n"
107
107
"\n"
108
108
"* 'git add --all <pathspec>' will let you also record the removals.\n"
109
109
"\n"
@@ -382,6 +382,13 @@ static int ignore_add_errors, intent_to_add, ignore_missing;
382
382
static int addremove = ADDREMOVE_DEFAULT ;
383
383
static int addremove_explicit = -1 ; /* unspecified */
384
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
+
385
392
static struct option builtin_add_options [] = {
386
393
OPT__DRY_RUN (& show_only , N_ ("dry run" )),
387
394
OPT__VERBOSE (& verbose , N_ ("be verbose" )),
@@ -393,6 +400,10 @@ static struct option builtin_add_options[] = {
393
400
OPT_BOOL ('u' , "update" , & take_worktree_changes , N_ ("update tracked files" )),
394
401
OPT_BOOL ('N' , "intent-to-add" , & intent_to_add , N_ ("record only the fact that the path will be added later" )),
395
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 },
396
407
OPT_BOOL ( 0 , "refresh" , & refresh_only , N_ ("don't add, only refresh the index" )),
397
408
OPT_BOOL ( 0 , "ignore-errors" , & ignore_add_errors , N_ ("just skip files which cannot be added because of errors" )),
398
409
OPT_BOOL ( 0 , "ignore-missing" , & ignore_missing , N_ ("check if - even missing - files are ignored in dry run" )),
0 commit comments