@@ -97,13 +97,13 @@ static int fix_unmerged_status(struct diff_filepair *p,
9797}
9898
9999static 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"
104104"\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"
107107"\n"
108108"* 'git add --all <pathspec>' will let you also record the removals.\n"
109109"\n"
@@ -382,6 +382,13 @@ static int ignore_add_errors, intent_to_add, ignore_missing;
382382static int addremove = ADDREMOVE_DEFAULT ;
383383static int addremove_explicit = -1 ; /* unspecified */
384384
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+
385392static struct option builtin_add_options [] = {
386393 OPT__DRY_RUN (& show_only , N_ ("dry run" )),
387394 OPT__VERBOSE (& verbose , N_ ("be verbose" )),
@@ -393,6 +400,10 @@ static struct option builtin_add_options[] = {
393400 OPT_BOOL ('u' , "update" , & take_worktree_changes , N_ ("update tracked files" )),
394401 OPT_BOOL ('N' , "intent-to-add" , & intent_to_add , N_ ("record only the fact that the path will be added later" )),
395402 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 },
396407 OPT_BOOL ( 0 , "refresh" , & refresh_only , N_ ("don't add, only refresh the index" )),
397408 OPT_BOOL ( 0 , "ignore-errors" , & ignore_add_errors , N_ ("just skip files which cannot be added because of errors" )),
398409 OPT_BOOL ( 0 , "ignore-missing" , & ignore_missing , N_ ("check if - even missing - files are ignored in dry run" )),
0 commit comments