Re: [PATCH] status: compare against both upstream and push branch by default
- From
Harald Nordgren <haraldnordgren@gmail.com>
- Date
- Oct 20, 2026, 10:19 UTC
- Message-ID
- <CAHwyqnU1NPp3N7Qv3ChEPCo-mL=gASeG334YFg2tczzLomsm6A@mail.gmail.com>
- In-Reply-To
- <5030377b-58c8-4193-8d72-79955082269f@gmail.com>
Show 6 quoted lines
> 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.
Show 123 quoted lines
> > 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: c51408889c3b372814bc20b9431c3b74d0d268ebAs 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