From: Harald Nordgren Date: Tue, 20 Oct 2026 10:19:33 GMT Subject: Re: [PATCH] status: compare against both upstream and push branch by default Message-ID: In-Reply-To: <5030377b-58c8-4193-8d72-79955082269f@gmail.com> > If you want to change the default value of a config variable it is > helpful to explain why the current default was chosen as well as why you > think the new default is better. In this case wasn't there some > discussion about the default value when the variable was introduced? > Providing that context would make it much easier for people to judge if > this change is a good idea. That's fair. > > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2458%2FHaraldNordgren%2Fstatus-compare-branches-default-v1 > > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2458/HaraldNordgren/status-compare-branches-default-v1 > > Pull-Request: https://github.com/git/git/pull/2458 > > > > Documentation/config/status.adoc | 11 ++++++----- > > remote.c | 1 + > > t/t5505-remote.sh | 1 - > > t/t6040-tracking-info.sh | 30 +++++++++++++++--------------- > > 4 files changed, 22 insertions(+), 21 deletions(-) > > > > diff --git a/Documentation/config/status.adoc b/Documentation/config/status.adoc > > index b5dd85b761..1d847d3a8a 100644 > > --- a/Documentation/config/status.adoc > > +++ b/Documentation/config/status.adoc > > @@ -23,8 +23,9 @@ status.compareBranches:: > > are supported. They are interpreted as `branch@{upstream}` and > > `branch@{push}` for the current branch. > > + > > -If not set, the default behavior is equivalent to `@{upstream}`, which > > -compares against the configured upstream tracking branch. > > +If not set, the default behavior is equivalent to `@{upstream} @{push}`, > > +which compares against both the configured upstream and push tracking > > +branches. > > + > > The entries are shown in the order they appear in the configuration. > > Duplicate entries that resolve to the same ref are suppressed after > > @@ -36,11 +37,11 @@ Example: > > + > > ---- > > [status] > > - compareBranches = @{upstream} @{push} > > + compareBranches = @{upstream} > > ---- > > + > > -This would show comparisons against both the configured upstream and push > > -tracking branches for the current branch. > > +This would only show the comparison against the configured upstream > > +tracking branch for the current branch. > > > > status.displayCommentPrefix:: > > If set to true, linkgit:git-status[1] will insert a comment > > diff --git a/remote.c b/remote.c > > index 71170f36a9..6fdb4b84da 100644 > > --- a/remote.c > > +++ b/remote.c > > @@ -2465,6 +2465,7 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb, > > string_list_remove_empty_items(&branches, 0); > > } else { > > string_list_append(&branches, "@{upstream}"); > > + string_list_append(&branches, "@{push}"); > > } > > > > upstream_ref = branch_get_upstream(branch, NULL); > > diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh > > index 5fbfcb0848..f77753605f 100755 > > --- a/t/t5505-remote.sh > > +++ b/t/t5505-remote.sh > > @@ -34,7 +34,6 @@ setup_url_pushremote () { > > git checkout -b topic --track origin/main && > > git commit --allow-empty -m topic-change && > > git config push.default current && > > - git config status.compareBranches "@{upstream} @{push}" && > > git config branch.topic.pushRemote "$fork_url" && > > git push > > ) > > diff --git a/t/t6040-tracking-info.sh b/t/t6040-tracking-info.sh > > index e95d420972..e10cde090d 100755 > > --- a/t/t6040-tracking-info.sh > > +++ b/t/t6040-tracking-info.sh > > @@ -331,19 +331,6 @@ test_expect_success 'status.compareBranches deduplicates when upstream and push > > test_cmp expect actual > > ' > > > > -test_expect_success 'status.compareBranches with only upstream shows only upstream' ' > > - test_config -C test status.compareBranches "@{upstream}" && > > - git -C test checkout main && > > - git -C test status >actual && > > - cat >expect <<-EOF && > > - On branch main > > - Your branch is up to date with ${SQ}origin/main${SQ}. > > - > > - nothing to commit, working tree clean > > - EOF > > - test_cmp expect actual > > -' > > - > > test_expect_success 'status.compareBranches with only push shows only push' ' > > test_config -C test push.default current && > > test_config -C test status.compareBranches "@{push}" && > > @@ -361,9 +348,8 @@ test_expect_success 'status.compareBranches with only push shows only push' ' > > test_cmp expect actual > > ' > > > > -test_expect_success 'status.compareBranches shows ahead of both upstream and push branch' ' > > +test_expect_success 'status shows ahead of both upstream and push branch by default' ' > > test_config -C test push.default current && > > - test_config -C test status.compareBranches "@{upstream} @{push}" && > > git -C test checkout -b feature3 origin/main && > > git -C test push origin HEAD && > > (cd test && advance work) && > > @@ -380,6 +366,20 @@ test_expect_success 'status.compareBranches shows ahead of both upstream and pus > > test_cmp expect actual > > ' > > > > +test_expect_success 'status.compareBranches with only upstream shows only upstream' ' > > + test_config -C test push.default current && > > + test_config -C test status.compareBranches "@{upstream}" && > > + git -C test checkout feature3 && > > + git -C test status >actual && > > + cat >expect <<-EOF && > > + On branch feature3 > > + Your branch is ahead of ${SQ}origin/main${SQ} by 1 commit. > > + > > + nothing to commit, working tree clean > > + EOF > > + test_cmp expect actual > > +' > > + > > test_expect_success 'checkout with status.compareBranches shows both branches' ' > > test_config -C test push.default current && > > test_config -C test status.compareBranches "@{upstream} @{push}" && > > > > base-commit: c51408889c3b372814bc20b9431c3b74d0d268eb As a side note: I see that you include the whole message in replies, leaving responders to clean it, so more work for multiple people instead of more work for a single person. Isn't the convention to only include the parts that you are responding to? Harald