Skip to contentSkip to conversation

pull: colorize the hint about setting `pull.rebase`

PATCH In review Johannes Schindelin via GitGitGadget 2 participants 2 messages Nov 19, 2020

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pull: colorize the hint about setting `pull.rebase`

From: Johannes Schindelin <[email protected]>

In d18c950a69f (pull: warn if the user didn't say whether to rebase or to merge, 2020-03-09), a new hint was introduced to encourage users to make a conscious decision about whether they want their pull to merge or to rebase by configuring the pull.rebase setting.

This warning was clearly intended to advise users, but as pointed out in
https://lore.kernel.org/git/87ima2rdsm.fsf%40evledraar.gmail.com, it uses warning() instead of advise().

One consequence is that the advice is not colorized in the same manner as other, similar messages. So let's use advise() instead.

---
pull: colorize the hint about setting pull.rebase

I see that Junio briefly wondered
[https://lore.kernel.org/git/[email protected]/]
about using an advice here, and concluded that it was not needed because the warning is self-squelching (i.e. there is already a config setting that will silence this warning). But that missed the fact that warnings are not colorized, whereas advice is.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-795%2Fdscho%2Fcolorize-pull.rebase-advice-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-795/dscho/colorize-pull.rebase-advice-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/795

 builtin/pull.c               | 24 ++++++++++++------------
 t/t7601-merge-pull-config.sh |  7 +++++--
 2 files changed, 17 insertions(+), 14 deletions(-)
builtin/pull.c +12 -12
index 17aa63cd35..1034372f8b 100644
@@ -345,18 +345,18 @@ static enum rebase_type config_get_rebase(void)
 		return parse_config_rebase("pull.rebase", value, 1);
 
 	if (opt_verbosity >= 0 && !opt_ff) {
-		warning(_("Pulling without specifying how to reconcile divergent branches is\n"
-			"discouraged. You can squelch this message by running one of the following\n"
-			"commands sometime before your next pull:\n"
-			"\n"
-			"  git config pull.rebase false  # merge (the default strategy)\n"
-			"  git config pull.rebase true   # rebase\n"
-			"  git config pull.ff only       # fast-forward only\n"
-			"\n"
-			"You can replace \"git config\" with \"git config --global\" to set a default\n"
-			"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-			"or --ff-only on the command line to override the configured default per\n"
-			"invocation.\n"));
+		advise(_("Pulling without specifying how to reconcile divergent branches is\n"
+			 "discouraged. You can squelch this message by running one of the following\n"
+			 "commands sometime before your next pull:\n"
+			 "\n"
+			 "  git config pull.rebase false  # merge (the default strategy)\n"
+			 "  git config pull.rebase true   # rebase\n"
+			 "  git config pull.ff only       # fast-forward only\n"
+			 "\n"
+			 "You can replace \"git config\" with \"git config --global\" to set a default\n"
+			 "preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+			 "or --ff-only on the command line to override the configured default per\n"
+			 "invocation.\n"));
 	}
 
 	return REBASE_FALSE;
t/t7601-merge-pull-config.sh +5 -2
index c5c4ea5fc0..6774e9d86f 100755
@@ -29,8 +29,11 @@ test_expect_success 'setup' '
 
 test_expect_success 'pull.rebase not set' '
 	git reset --hard c0 &&
-	git pull . c1 2>err &&
-	test_i18ngrep "Pulling without specifying how to reconcile" err
+	git -c color.advice=always pull . c1 2>err &&
+	test_decode_color <err >decoded &&
+	test_i18ngrep "<YELLOW>hint: " decoded &&
+	test_i18ngrep "Pulling without specifying how to reconcile" decoded
+
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=true' '

base-commit: faefdd61ec7c7f6f3c8c9907891465ac9a2a1475

Signature · 1 line
gitgitgadget
#1 lore raw

"Johannes Schindelin via GitGitGadget" <[email protected]>

Quoted 7 lines · writes:

From: Johannes Schindelin <[email protected]>

In d18c950a69f (pull: warn if the user didn't say whether to rebase or to merge, 2020-03-09), a new hint was introduced to encourage users to make a conscious decision about whether they want their pull to merge or to rebase by configuring the pull.rebase setting.

Quoted 6 lines

This warning was clearly intended to advise users, but as pointed out in
https://lore.kernel.org/git/87ima2rdsm.fsf%40evledraar.gmail.com, it uses warning() instead of advise().

One consequence is that the advice is not colorized in the same manner as other, similar messages. So let's use advise() instead.

The advise() gives unconditional output like warning(), so we still take advantage of the variable's self-squelching nature. I am OK with the change.

Besides coloring (which I personally find it distracting but not so strongly to forbid others from using), advise() behaves better when showing multi-line messages, and that would be another reason why we want to use it over warning() here.

Will queue. Thanks.

Quoted 75 lines

---
pull: colorize the hint about setting pull.rebase

I see that Junio briefly wondered
[https://lore.kernel.org/git/[email protected]/]
about using an advice here, and concluded that it was not needed because the warning is self-squelching (i.e. there is already a config setting that will silence this warning). But that missed the fact that warnings are not colorized, whereas advice is.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-795%2Fdscho%2Fcolorize-pull.rebase-advice-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-795/dscho/colorize-pull.rebase-advice-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/795

 builtin/pull.c               | 24 ++++++++++++------------
 t/t7601-merge-pull-config.sh |  7 +++++--
 2 files changed, 17 insertions(+), 14 deletions(-)
builtin/pull.c +12 -12
index 17aa63cd35..1034372f8b 100644
@@ -345,18 +345,18 @@ static enum rebase_type config_get_rebase(void)
 		return parse_config_rebase("pull.rebase", value, 1);
 
 	if (opt_verbosity >= 0 && !opt_ff) {
-		warning(_("Pulling without specifying how to reconcile divergent branches is\n"
-			"discouraged. You can squelch this message by running one of the following\n"
-			"commands sometime before your next pull:\n"
-			"\n"
-			"  git config pull.rebase false  # merge (the default strategy)\n"
-			"  git config pull.rebase true   # rebase\n"
-			"  git config pull.ff only       # fast-forward only\n"
-			"\n"
-			"You can replace \"git config\" with \"git config --global\" to set a default\n"
-			"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
-			"or --ff-only on the command line to override the configured default per\n"
-			"invocation.\n"));
+		advise(_("Pulling without specifying how to reconcile divergent branches is\n"
+			 "discouraged. You can squelch this message by running one of the following\n"
+			 "commands sometime before your next pull:\n"
+			 "\n"
+			 "  git config pull.rebase false  # merge (the default strategy)\n"
+			 "  git config pull.rebase true   # rebase\n"
+			 "  git config pull.ff only       # fast-forward only\n"
+			 "\n"
+			 "You can replace \"git config\" with \"git config --global\" to set a default\n"
+			 "preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+			 "or --ff-only on the command line to override the configured default per\n"
+			 "invocation.\n"));
 	}
 
 	return REBASE_FALSE;
t/t7601-merge-pull-config.sh +5 -2
index c5c4ea5fc0..6774e9d86f 100755
@@ -29,8 +29,11 @@ test_expect_success 'setup' '
 
 test_expect_success 'pull.rebase not set' '
 	git reset --hard c0 &&
-	git pull . c1 2>err &&
-	test_i18ngrep "Pulling without specifying how to reconcile" err
+	git -c color.advice=always pull . c1 2>err &&
+	test_decode_color <err >decoded &&
+	test_i18ngrep "<YELLOW>hint: " decoded &&
+	test_i18ngrep "Pulling without specifying how to reconcile" decoded
+
 '
 
 test_expect_success 'pull.rebase not set and pull.ff=true' '

base-commit: faefdd61ec7c7f6f3c8c9907891465ac9a2a1475