git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 04/11] builtin rebase: support --quiet

From
Pratik Karki <predatoramigo@gmail.com>
Date
Aug 8, 2018, 13:48 UTC
Message-ID
<20180808134830.19949-5-predatoramigo@gmail.com>
In-Reply-To
<20180808134830.19949-1-predatoramigo@gmail.com>

This commit introduces a rebase option `--quiet`. While `--quiet` is commonly perceived as opposite to `--verbose`, this is not the case for the rebase command: both `--quiet` and `--verbose` default to `false` if neither `--quiet` nor `--verbose` is present.

This commit goes further and introduces `--no-quiet` which is the contrary of `--quiet` and it's introduction doesn't modify any behaviour.

Note: The `flags` field in `rebase_options` will accumulate more bits in
subsequent commits, in particular a verbose and a diffstat flag. And as
--quoet inthe shell scripted version of the rebase command switches off
--verbose and --stat, and as --verbose switches off --quiet, we use the
(negated) REBASE_NO_QUIET instead of REBASE_QUIET: this allows us to
turn off the quiet mode and turn on the verbose and diffstat mode in a
single OPT_BIT(), and the opposite in a single OPT_NEGBIT().
Signed-off-by: Pratik Karki <predatoramigo@gmail.com>
---
 builtin/rebase.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index b79f9b0a9f..19fa4d3fc4 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -79,6 +79,10 @@ struct rebase_options {
 	int root;
 	struct commit *restrict_revision;
 	int dont_finish_rebase;
+	enum {
+		REBASE_NO_QUIET = 1<<0,
+	} flags;
+	struct strbuf git_am_opt;
 };
 
 /* Returns the filename prefixed by the state_dir */
@@ -159,6 +163,9 @@ static int run_specific_rebase(struct rebase_options *opts)
 	add_var(&script_snippet, "revisions", opts->revisions);
 	add_var(&script_snippet, "restrict_revision", opts->restrict_revision ?
 		oid_to_hex(&opts->restrict_revision->object.oid) : NULL);
+	add_var(&script_snippet, "GIT_QUIET",
+		opts->flags & REBASE_NO_QUIET ? "" : "t");
+	add_var(&script_snippet, "git_am_opt", opts->git_am_opt.buf);
 
 	switch (opts->type) {
 	case REBASE_AM:
@@ -308,6 +315,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
 {
 	struct rebase_options options = {
 		.type = REBASE_UNSPECIFIED,
+		.flags = REBASE_NO_QUIET,
+		.git_am_opt = STRBUF_INIT,
 	};
 	const char *branch_name;
 	int ret, flags;
@@ -321,6 +330,9 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
 			   N_("rebase onto given branch instead of upstream")),
 		OPT_BOOL(0, "no-verify", &ok_to_skip_pre_rebase,
 			 N_("allow pre-rebase hook to run")),
+		OPT_NEGBIT('q', "quiet", &options.flags,
+			   N_("be quiet. implies --no-stat"),
+			   REBASE_NO_QUIET),
 		OPT_END(),
 	};
 
@@ -357,6 +369,9 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
 		usage_with_options(builtin_rebase_usage,
 				   builtin_rebase_options);
 
+	if (!(options.flags & REBASE_NO_QUIET))
+		strbuf_addstr(&options.git_am_opt, " -q");
+
 	switch (options.type) {
 	case REBASE_MERGE:
 	case REBASE_INTERACTIVE:
-- 
2.18.0
Previous: Johannes SchindelinNext: Stefan Beller
Message 11 of 42 in “A minimal builtin rebase”
  1. Pratik KarkiAug 8, 2018
  2. 01/11 builtin rebase: support --ontoPratik Karki, Aug 8, 2018
  3. Junio C HamanoAug 8, 2018
  4. Johannes SchindelinAug 24, 2018
  5. 02/11 builtin rebase: support `git rebase --onto A...B`Pratik Karki, Aug 8, 2018
  6. Junio C HamanoAug 8, 2018
  7. Johannes SchindelinAug 26, 2018
  8. 03/11 builtin rebase: handle the pre-rebase hook (and add --no-verify)Pratik Karki, Aug 8, 2018
  9. Junio C HamanoAug 8, 2018
  10. Johannes SchindelinAug 27, 2018
  11. 04/11 builtin rebase: support --quietPratik Karki, Aug 8, 2018
  12. Stefan BellerAug 8, 2018
  13. Junio C HamanoAug 8, 2018
  14. Johannes SchindelinAug 27, 2018
  15. 05/11 builtin rebase: support the `verbose` and `diffstat` optionsPratik Karki, Aug 8, 2018
  16. 06/11 builtin rebase: require a clean worktreePratik Karki, Aug 8, 2018
  17. 07/11 builtin rebase: try to fast forward when possiblePratik Karki, Aug 8, 2018
  18. 08/11 builtin rebase: support --force-rebasePratik Karki, Aug 8, 2018
  19. Stefan BellerAug 8, 2018
  20. Johannes SchindelinAug 24, 2018
  21. 09/11 builtin rebase: start a new rebase only if none is in progressPratik Karki, Aug 8, 2018
  22. Stefan BellerAug 8, 2018
  23. Johannes SchindelinAug 24, 2018
  24. 10/11 builtin rebase: only store fully-qualified refs in `options.head_name`Pratik Karki, Aug 8, 2018
  25. 11/11 builtin rebase: support `git rebase <upstream> <switch-to>`Pratik Karki, Aug 8, 2018
  26. Duy NguyenAug 8, 2018
  27. Johannes SchindelinAug 8, 2018
  28. 00/11 A minimal builtin rebaseJohannes Schindelin via GitGitGadget, Sep 4, 2018
  29. 01/11 builtin rebase: support --ontoPratik Karki via GitGitGadget, Sep 4, 2018
  30. 02/11 builtin rebase: support `git rebase --onto A...B`Pratik Karki via GitGitGadget, Sep 4, 2018
  31. 03/11 builtin rebase: handle the pre-rebase hook and --no-verifyPratik Karki via GitGitGadget, Sep 4, 2018
  32. 04/11 builtin rebase: support --quietPratik Karki via GitGitGadget, Sep 4, 2018
  33. 05/11 builtin rebase: support the `verbose` and `diffstat` optionsPratik Karki via GitGitGadget, Sep 4, 2018
  34. 06/11 builtin rebase: require a clean worktreePratik Karki via GitGitGadget, Sep 4, 2018
  35. 07/11 builtin rebase: try to fast forward when possiblePratik Karki via GitGitGadget, Sep 4, 2018
  36. 08/11 builtin rebase: support --force-rebasePratik Karki via GitGitGadget, Sep 4, 2018
  37. 09/11 builtin rebase: start a new rebase only if none is in progressPratik Karki via GitGitGadget, Sep 4, 2018
  38. 10/11 builtin rebase: only store fully-qualified refs in `options.head_name`Pratik Karki via GitGitGadget, Sep 4, 2018
  39. SZEDER GáborSep 8, 2018
  40. Junio C HamanoSep 10, 2018
  41. SZEDER GáborSep 10, 2018
  42. 11/11 builtin rebase: support `git rebase <upstream> <switch-to>`Pratik Karki via GitGitGadget, Sep 4, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.