Skip to content

Commit

Permalink
git-rebase, sequencer: extend --quiet option for the interactive mach…
Browse files Browse the repository at this point in the history
…inery

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 "Successfully rebased..."

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.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
newren authored and gitster committed Dec 28, 2018
1 parent 45339f7 commit 899b49c
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 16 deletions.
5 changes: 1 addition & 4 deletions builtin/rebase.c
Expand Up @@ -185,10 +185,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;
Expand Down
2 changes: 1 addition & 1 deletion git-legacy-rebase.sh
Expand Up @@ -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 &&
Expand Down
2 changes: 1 addition & 1 deletion git-rebase--common.sh
Expand Up @@ -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" > \
Expand Down
23 changes: 13 additions & 10 deletions sequencer.c
Expand Up @@ -150,14 +150,14 @@ 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")
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)
{
Expand Down Expand Up @@ -2357,6 +2357,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;
Expand Down Expand Up @@ -2424,9 +2427,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)
Expand Down Expand Up @@ -3503,10 +3503,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());
Expand Down Expand Up @@ -3738,8 +3739,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);
Expand Down
1 change: 1 addition & 0 deletions sequencer.h
Expand Up @@ -39,6 +39,7 @@ struct replay_opts {
int allow_empty_message;
int keep_redundant_commits;
int verbose;
int quiet;

int mainline;

Expand Down

0 comments on commit 899b49c

Please sign in to comment.