Message ID | 20200506140138.650455-1-abhishekkumar8222@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | commit: silence git-gc if --quiet is given | expand |
On Wed, May 6, 2020 at 10:03 AM Abhishek Kumar <abhishekkumar8222@gmail.com> wrote: > As reported by Perrick [1], commit does not propagate quiet behavior to > gc if present. While we are at it, convert argv_gc_auto to struct argv_array. > > [1]: https://lore.kernel.org/git/20200506094327.GC31637@rillettes/ According to the source you cite, this sort of issue has come up before in a different context (git-fetch). Do we know if there are other commands which invoke git-gc which might also suffer the same issue? It would be nice for the commit message to say something about this... for instance, that git-commit is the final command which needs this fix or, if not, which additional commands are likely to need the same treatment. > Reported-by: Pierrick Gaudry <pierrick.gaudry@loria.fr> > Signed-off-by: Abhishek Kumar <abhishekkumar8222@gmail.com>
Eric Sunshine <sunshine@sunshineco.com> writes: > On Wed, May 6, 2020 at 10:03 AM Abhishek Kumar > <abhishekkumar8222@gmail.com> wrote: >> As reported by Perrick [1], commit does not propagate quiet behavior to >> gc if present. While we are at it, convert argv_gc_auto to struct argv_array. >> >> [1]: https://lore.kernel.org/git/20200506094327.GC31637@rillettes/ > > According to the source you cite, this sort of issue has come up > before in a different context (git-fetch). Do we know if there are > other commands which invoke git-gc which might also suffer the same > issue? I just wrote my analysis to the original thread. It looks to me a fairly low-hanging fruit.
diff --git a/builtin/commit.c b/builtin/commit.c index a73de0a4c5..a48e312ebd 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -1494,7 +1494,7 @@ static int git_commit_config(const char *k, const char *v, void *cb) int cmd_commit(int argc, const char **argv, const char *prefix) { - const char *argv_gc_auto[] = {"gc", "--auto", NULL}; + struct argv_array argv_gc_auto = ARGV_ARRAY_INIT; static struct wt_status s; static struct option builtin_commit_options[] = { OPT__QUIET(&quiet, N_("suppress summary after successful commit")), @@ -1703,7 +1703,11 @@ int cmd_commit(int argc, const char **argv, const char *prefix) git_test_write_commit_graph_or_die(); repo_rerere(the_repository, 0); - run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); + argv_array_pushl(&argv_gc_auto, "gc", "--auto", NULL); + if (quiet) + argv_array_push(&argv_gc_auto, "--quiet"); + run_command_v_opt(argv_gc_auto.argv, RUN_GIT_CMD); + argv_array_clear(&argv_gc_auto); run_commit_hook(use_editor, get_index_file(), "post-commit", NULL); if (amend && !no_post_rewrite) { commit_post_rewrite(the_repository, current_head, &oid);
As reported by Perrick [1], commit does not propagate quiet behavior to gc if present. While we are at it, convert argv_gc_auto to struct argv_array. [1]: https://lore.kernel.org/git/20200506094327.GC31637@rillettes/ Reported-by: Pierrick Gaudry <pierrick.gaudry@loria.fr> Signed-off-by: Abhishek Kumar <abhishekkumar8222@gmail.com> --- builtin/commit.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)