Re: [PATCH 1/2] git-add: -s flag added (silently ignore files)
Junio C Hamano writes: >> 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)")), > > I'd prefer not to see a new option whose worth hasn't been proven in > the field to squat on any short-and-sweet single letter option > name and would suggest replacing that 's' with 0, at least for now. Another option would be a -k (--keep-going) that would ignore the files, but not silently. "git mv" has such an option already. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] git-add: -s flag added (silently ignore files)
Olaf Klischat writes: > Signed-off-by: Olaf Klischat > --- I am personally not sympathetic to the reasoning stated in the proposed commit log message above your signed-off-by line; the change is not justified at all. But I'll comment on the code changes anyway. > 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)")), I'd prefer not to see a new option whose worth hasn't been proven in the field to squat on any short-and-sweet single letter option name and would suggest replacing that 's' with 0, at least for now. > @@ -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")) { The second variant is unwarranted. We may have a variable or two that are accepted with '-' or '_' in their names, but they are backward compatibility measures, only to cover previous mistakes that named them in these letters in the first place. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 1/2] git-add: -s flag added (silently ignore files)
Signed-off-by: Olaf Klischat --- 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html