pull: colorize the hint about setting `pull.rebase`
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
@@ -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
@@ -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
"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 thepull.rebasesetting.
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 useswarning()instead ofadvise().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
Pointed-out-by Ævar Arnfjörð Bjarmason <[email protected]>Signed-off-by Johannes Schindelin <[email protected]>---
pull: colorize the hint about setting pull.rebaseI 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/795builtin/pull.c | 24 ++++++++++++------------ t/t7601-merge-pull-config.sh | 7 +++++-- 2 files changed, 17 insertions(+), 14 deletions(-)builtin/pull.c +12
-12@@ -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@@ -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