Hi Elijah,

On Wed, 7 Nov 2018, Elijah Newren wrote:

> While 'quiet' and 'interactive' may sound like antonyms, the interactive
> machinery actually has logic that implements several
> interactive_rebase=implied cases (--exec, --keep-empty, --rebase-merges)
> which won't pop up an editor.  The rewrite of interactive rebase in C
> added a quiet option, though it only turns stats off.  Since we want to
> make the interactive machinery also take over for git-rebase--merge, it
> should fully implement the --quiet option.
> 
> git-rebase--interactive was already somewhat quieter than
> git-rebase--merge and git-rebase--am, possibly because cherry-pick has
> just traditionally been quieter.  As such, we only drop a few
> informational messages -- "Rebasing (n/m)" and "Succesfully rebased..."

Makes sense.

> Also, for simplicity, remove the differences in how quiet and verbose
> options were recorded.  Having one be signalled by the presence of a
> "verbose" file in the state_dir, while the other was signalled by the
> contents of a "quiet" file was just weirdly inconsistent.  (This
> inconsistency pre-dated the rewrite into C.)  Make them consistent by
> having them both key off the presence of the file.

I am slightly concerned that some creative power user could have written
scripts that rely on this behavior.

But only *slightly* concerned.

The patch looks correct.

Ciao,
Dscho

> 
> Signed-off-by: Elijah Newren <new...@gmail.com>
> ---
>  builtin/rebase.c      |  5 +----
>  git-legacy-rebase.sh  |  2 +-
>  git-rebase--common.sh |  2 +-
>  sequencer.c           | 23 +++++++++++++----------
>  sequencer.h           |  1 +
>  5 files changed, 17 insertions(+), 16 deletions(-)
> 
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index 0ee06aa363..be004406a6 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -181,10 +181,7 @@ static int read_basic_state(struct rebase_options *opts)
>       if (get_oid(buf.buf, &opts->orig_head))
>               return error(_("invalid orig-head: '%s'"), buf.buf);
>  
> -     strbuf_reset(&buf);
> -     if (read_one(state_dir_path("quiet", opts), &buf))
> -             return -1;
> -     if (buf.len)
> +     if (file_exists(state_dir_path("quiet", opts)))
>               opts->flags &= ~REBASE_NO_QUIET;
>       else
>               opts->flags |= REBASE_NO_QUIET;
> diff --git a/git-legacy-rebase.sh b/git-legacy-rebase.sh
> index 75a08b2683..da27bfca5a 100755
> --- a/git-legacy-rebase.sh
> +++ b/git-legacy-rebase.sh
> @@ -113,7 +113,7 @@ read_basic_state () {
>       else
>               orig_head=$(cat "$state_dir"/head)
>       fi &&
> -     GIT_QUIET=$(cat "$state_dir"/quiet) &&
> +     test -f "$state_dir"/quiet && GIT_QUIET=t
>       test -f "$state_dir"/verbose && verbose=t
>       test -f "$state_dir"/strategy && strategy="$(cat "$state_dir"/strategy)"
>       test -f "$state_dir"/strategy_opts &&
> diff --git a/git-rebase--common.sh b/git-rebase--common.sh
> index 7e39d22871..dc18c682fa 100644
> --- a/git-rebase--common.sh
> +++ b/git-rebase--common.sh
> @@ -10,7 +10,7 @@ write_basic_state () {
>       echo "$head_name" > "$state_dir"/head-name &&
>       echo "$onto" > "$state_dir"/onto &&
>       echo "$orig_head" > "$state_dir"/orig-head &&
> -     echo "$GIT_QUIET" > "$state_dir"/quiet &&
> +     test t = "$GIT_QUIET" && : > "$state_dir"/quiet
>       test t = "$verbose" && : > "$state_dir"/verbose
>       test -n "$strategy" && echo "$strategy" > "$state_dir"/strategy
>       test -n "$strategy_opts" && echo "$strategy_opts" > \
> diff --git a/sequencer.c b/sequencer.c
> index 9e1ab3a2a7..bd8337dbf1 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -150,6 +150,7 @@ static GIT_PATH_FUNC(rebase_path_refs_to_delete, 
> "rebase-merge/refs-to-delete")
>  static GIT_PATH_FUNC(rebase_path_gpg_sign_opt, "rebase-merge/gpg_sign_opt")
>  static GIT_PATH_FUNC(rebase_path_orig_head, "rebase-merge/orig-head")
>  static GIT_PATH_FUNC(rebase_path_verbose, "rebase-merge/verbose")
> +static GIT_PATH_FUNC(rebase_path_quiet, "rebase-merge/quiet")
>  static GIT_PATH_FUNC(rebase_path_signoff, "rebase-merge/signoff")
>  static GIT_PATH_FUNC(rebase_path_head_name, "rebase-merge/head-name")
>  static GIT_PATH_FUNC(rebase_path_onto, "rebase-merge/onto")
> @@ -157,7 +158,6 @@ static GIT_PATH_FUNC(rebase_path_autostash, 
> "rebase-merge/autostash")
>  static GIT_PATH_FUNC(rebase_path_strategy, "rebase-merge/strategy")
>  static GIT_PATH_FUNC(rebase_path_strategy_opts, "rebase-merge/strategy_opts")
>  static GIT_PATH_FUNC(rebase_path_allow_rerere_autoupdate, 
> "rebase-merge/allow_rerere_autoupdate")
> -static GIT_PATH_FUNC(rebase_path_quiet, "rebase-merge/quiet")
>  
>  static int git_sequencer_config(const char *k, const char *v, void *cb)
>  {
> @@ -2307,6 +2307,9 @@ static int read_populate_opts(struct replay_opts *opts)
>               if (file_exists(rebase_path_verbose()))
>                       opts->verbose = 1;
>  
> +             if (file_exists(rebase_path_quiet()))
> +                     opts->quiet = 1;
> +
>               if (file_exists(rebase_path_signoff())) {
>                       opts->allow_ff = 0;
>                       opts->signoff = 1;
> @@ -2374,9 +2377,6 @@ int write_basic_state(struct replay_opts *opts, const 
> char *head_name,
>  
>       if (quiet)
>               write_file(rebase_path_quiet(), "%s\n", quiet);
> -     else
> -             write_file(rebase_path_quiet(), "\n");
> -
>       if (opts->verbose)
>               write_file(rebase_path_verbose(), "%s", "");
>       if (opts->strategy)
> @@ -3450,10 +3450,11 @@ static int pick_commits(struct todo_list *todo_list, 
> struct replay_opts *opts)
>                                       fprintf(f, "%d\n", todo_list->done_nr);
>                                       fclose(f);
>                               }
> -                             fprintf(stderr, "Rebasing (%d/%d)%s",
> -                                     todo_list->done_nr,
> -                                     todo_list->total_nr,
> -                                     opts->verbose ? "\n" : "\r");
> +                             if (!opts->quiet)
> +                                     fprintf(stderr, "Rebasing (%d/%d)%s",
> +                                             todo_list->done_nr,
> +                                             todo_list->total_nr,
> +                                             opts->verbose ? "\n" : "\r");
>                       }
>                       unlink(rebase_path_message());
>                       unlink(rebase_path_author_script());
> @@ -3684,8 +3685,10 @@ static int pick_commits(struct todo_list *todo_list, 
> struct replay_opts *opts)
>               }
>               apply_autostash(opts);
>  
> -             fprintf(stderr, "Successfully rebased and updated %s.\n",
> -                     head_ref.buf);
> +             if (!opts->quiet)
> +                     fprintf(stderr,
> +                             "Successfully rebased and updated %s.\n",
> +                             head_ref.buf);
>  
>               strbuf_release(&buf);
>               strbuf_release(&head_ref);
> diff --git a/sequencer.h b/sequencer.h
> index 660cff5050..45fd977bef 100644
> --- a/sequencer.h
> +++ b/sequencer.h
> @@ -39,6 +39,7 @@ struct replay_opts {
>       int allow_empty_message;
>       int keep_redundant_commits;
>       int verbose;
> +     int quiet;
>  
>       int mainline;
>  
> -- 
> 2.19.1.858.g526e8fe740.dirty
> 
> 

Reply via email to