Signed-off-by: Olaf Klischat <olaf.klischat@xxxxxxxxx> --- builtin/add.c | 14 +++++++++++--- t/t3700-add.sh | 17 ++++++++++++++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/builtin/add.c b/builtin/add.c index e664100..61bb9ce 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -313,7 +313,7 @@ static const char ignore_error[] = N_("The following paths are ignored by one of your .gitignore files:\n"); static int verbose = 0, show_only = 0, ignored_too = 0, refresh_only = 0; -static int ignore_add_errors, addremove, intent_to_add, ignore_missing = 0; +static int ignore_add_errors, addremove, intent_to_add, ignore_missing, silent_ignores = 0; static struct option builtin_add_options[] = { OPT__DRY_RUN(&show_only, N_("dry run")), @@ -329,6 +329,7 @@ static struct option builtin_add_options[] = { OPT_BOOLEAN( 0 , "refresh", &refresh_only, N_("don't add, only refresh the index")), OPT_BOOLEAN( 0 , "ignore-errors", &ignore_add_errors, N_("just skip files which cannot be added because of errors")), OPT_BOOLEAN( 0 , "ignore-missing", &ignore_missing, N_("check if - even missing - files are ignored in dry run")), + OPT_BOOLEAN('s', "silent-ignores", &silent_ignores, N_("don't fail when ignored files are specified on the command line (ignore them silently)")), OPT_END(), }; @@ -339,6 +340,11 @@ static int add_config(const char *var, const char *value, void *cb) ignore_add_errors = git_config_bool(var, value); return 0; } + if (!strcmp(var, "add.silentignores") || + !strcmp(var, "add.silent-ignores")) { + silent_ignores = git_config_bool(var, value); + return 0; + } return git_default_config(var, value, cb); } @@ -346,11 +352,11 @@ static int add_files(struct dir_struct *dir, int flags) { int i, exit_status = 0; - if (dir->ignored_nr) { + if (dir->ignored_nr && !silent_ignores) { fprintf(stderr, _(ignore_error)); for (i = 0; i < dir->ignored_nr; i++) fprintf(stderr, "%s\n", dir->ignored[i]->name); - fprintf(stderr, _("Use -f if you really want to add them.\n")); + fprintf(stderr, _("Use -f if you really want to add them, or -s to ignore them silently.\n")); die(_("no files added")); } @@ -390,6 +396,8 @@ int cmd_add(int argc, const char **argv, const char *prefix) if (addremove && take_worktree_changes) die(_("-A and -u are mutually incompatible")); + if (ignored_too && silent_ignores) + die(_("-f and -s are mutually incompatible")); if (!show_only && ignore_missing) die(_("Option --ignore-missing can only be used together with --dry-run")); if ((addremove || take_worktree_changes) && !argc) { diff --git a/t/t3700-add.sh b/t/t3700-add.sh index 874b3a6..1e17ae2 100755 --- a/t/t3700-add.sh +++ b/t/t3700-add.sh @@ -294,7 +294,7 @@ test_expect_success 'git add --dry-run of an existing file output' " cat >expect.err <<\EOF The following paths are ignored by one of your .gitignore files: ignored-file -Use -f if you really want to add them. +Use -f if you really want to add them, or -s to ignore them silently. fatal: no files added EOF cat >expect.out <<\EOF @@ -310,4 +310,19 @@ test_expect_success 'git add --dry-run --ignore-missing of non-existing file out test_i18ncmp expect.err actual.err ' +cat >expect.err <<\EOF +EOF +cat >expect.out <<\EOF +add 'track-this' +EOF + +test_expect_success 'git add --dry-run --silent-ignore --ignore-missing of non-existing file' ' + git add --dry-run --silent-ignore --ignore-missing track-this ignored-file >actual.out 2>actual.err +' + +test_expect_success 'git add --dry-run --silent-ignore --ignore-missing of non-existing file output' ' + test_i18ncmp expect.out actual.out && + test_i18ncmp expect.err actual.err +' + test_done -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html