Stefan Beller <sbeller@xxxxxxxxxx> writes: > diff --git a/submodule.c b/submodule.c > index 9f0b544ebe..2d13744b06 100644 > --- a/submodule.c > +++ b/submodule.c > @@ -1019,7 +1019,7 @@ int submodule_uses_gitfile(const char *path) > return 1; > } > > -int ok_to_remove_submodule(const char *path) > +int ok_to_remove_submodule(const char *path, unsigned flags) > { > ssize_t len; > struct child_process cp = CHILD_PROCESS_INIT; > @@ -1032,15 +1032,27 @@ int ok_to_remove_submodule(const char *path) > if (!submodule_uses_gitfile(path)) > return 0; > > - argv_array_pushl(&cp.args, "status", "--porcelain", "-u", > + argv_array_pushl(&cp.args, "status", "--porcelain", > "--ignore-submodules=none", NULL); > + > + if (flags & SUBMODULE_REMOVAL_IGNORE_UNTRACKED) > + argv_array_push(&cp.args, "-uno"); > + else > + argv_array_push(&cp.args, "-uall"); > + > + if (!(flags & SUBMODULE_REMOVAL_IGNORE_IGNORED_UNTRACKED)) > + argv_array_push(&cp.args, "--ignored"); > + These "internal values to assemble command line" operations we cannot avoid. But things like this ... > if (start_command(&cp)) > - die(_("could not run 'git status --porcelain -u --ignore-submodules=none' in submodule %s"), path); > + die(_("could not run 'git status --porcelain --ignore-submodules=none %s %s' in submodule '%s'"), > + (flags & SUBMODULE_REMOVAL_IGNORE_UNTRACKED) ? "-uno" : "-uall", > + (!(flags & SUBMODULE_REMOVAL_IGNORE_IGNORED_UNTRACKED)) ? "--ignored" : "", > + path); and this ... > if (finish_command(&cp)) > - die(_("'git status --porcelain -u --ignore-submodules=none' failed in submodule %s"), path); > + die(_("'git status --porcelain --ignore-submodules=none %s %s' failed in submodule '%s'"), > + (flags & SUBMODULE_REMOVAL_IGNORE_UNTRACKED) ? "-uno" : "-uall", > + (!(flags & SUBMODULE_REMOVAL_IGNORE_IGNORED_UNTRACKED)) ? "--ignored" : "", > + path); makes me wonder if we want a helper that builds the string out of an already assembled cp.args[] array, so that we won't have to do the same thing twice/thrice and more importantly we won't have to worry about these three going out of sync.