From: Phillip Wood <phillip.wood123@gmail.com>
To: Harald Nordgren via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org
Cc: Harald Nordgren <haraldnordgren@gmail.com>
Subject: Re: [PATCH v17 2/2] status: show comparison with push remote tracking branch
Date: Fri, 9 Jan 2026 14:56:38 +0000 [thread overview]
Message-ID: <ba2b65a5-0e2c-41a5-a480-ec3f5ec2178a@gmail.com> (raw)
In-Reply-To: <1348542edced5d17c1220ee6bd30afd943acdbcf.1767608269.git.gitgitgadget@gmail.com>
Hi Harald
On 05/01/2026 10:17, Harald Nordgren via GitGitGadget wrote:
> From: Harald Nordgren <haraldnordgren@gmail.com>
>
> "git status" on a branch that follows a remote branch compares
> commits on the current branch and the remote-tracking branch it
> builds upon, to show "ahead", "behind", or "diverged" status.
>
> When working on a feature branch that tracks a remote feature branch,
> but you also want to track progress relative to the push destination
> tracking branch (which may differ from the upstream branch), git status
> now shows an additional comparison.
>
> When the upstream tracking branch differs from the push destination
> tracking branch, git status shows both the comparison with the upstream
> tracking branch (as before) and an additional comparison with the push
> destination tracking branch. The push branch comparison appears on a
> separate line after the upstream branch status, using the same format.
>
> Example output when tracking origin/main but push destination is
> origin/feature:
> On branch feature
> Your branch and 'origin/main' have diverged,
> and have 3 and 1 different commits each, respectively.
> (use "git pull" if you want to integrate the remote branch with yours)
>
> Your branch is ahead of 'origin/feature' by 1 commit.
> (use "git push" to publish your local commits)
The advice looks good
> The comparison is only shown when the push destination tracking branch
> differs from the upstream tracking branch, even if they are on the same
> remote.
Sounds sensible
> diff --git a/remote.c b/remote.c
> index 7163a8ec28..1f87b85b22 100644
> --- a/remote.c
> +++ b/remote.c
> @@ -29,6 +29,11 @@
>
> enum map_direction { FROM_SRC, FROM_DST };
>
> +enum branch_mode_flags {
> + BRANCH_MODE_PULL = (1 << 0),
> + BRANCH_MODE_PUSH = (1 << 1),
> +};
Using an enum for a set of flags is a bit confusing.
> +static char *get_remote_push_branch(struct branch *branch, char **full_ref_out)
> +{
> + struct remote *remote;
> + const char *push_remote;
> + char *push_dst = NULL;
> + char *tracking_ref;
> + const char *resolved;
> + char *ret;
> +
> + if (!branch)
> + return NULL;
> +
> + push_remote = pushremote_for_branch(branch, NULL);
> + if (!push_remote)
> + return NULL;
> +
> + remote = remotes_remote_get(the_repository, push_remote);
> + if (!remote)
> + return NULL;
> +
> + push_dst = remote_ref_for_branch(branch, 1);
> + if (!push_dst) {
> + if (remote->push.nr)
> + return NULL;
> + push_dst = xstrdup(branch->refname);
> + }
> +
> + tracking_ref = (char *)tracking_for_push_dest(remote, push_dst, NULL);
> + free(push_dst);
On reflection I wonder if we should be calling branch_get_push() instead
of remote_ref_for_branch() and tracking_for_push_dest() as it respects
'push.default' and so the branch it returns is the one that "git push"
without any arguments would push to.
> + if (!tracking_ref)
> + return NULL;
> +
> + resolved = refs_resolve_ref_unsafe(
> + get_main_ref_store(the_repository),
> + tracking_ref,
> + RESOLVE_REF_READING,
> + NULL, NULL);
> +
> + if (!resolved) {
> + free(tracking_ref);
> + return NULL;
> + }
> +
> + if (full_ref_out)
I think it would be simpler to just return the full refname and let the
caller shorten it.
> + *full_ref_out = xstrdup(resolved);
> +
> + ret = refs_shorten_unambiguous_ref(
> + get_main_ref_store(the_repository), resolved, 0);
> + free(tracking_ref);
> + return ret;
> +}
> +
> static void format_branch_comparison(struct strbuf *sb,
> int sti,
> int ours, int theirs,
> const char *branch_name,
> enum ahead_behind_flags abf,
> + enum branch_mode_flags advice_flags,
> int show_divergence_advice)
> {
> if (!sti) {
> @@ -2252,7 +2311,8 @@ static void format_branch_comparison(struct strbuf *sb,
> strbuf_addf(sb,
> _("Your branch and '%s' refer to different commits.\n"),
> branch_name);
> - if (advice_enabled(ADVICE_STATUS_HINTS))
> + if ((advice_flags & BRANCH_MODE_PUSH) &&
Why are we checking for BRANCH_MODE_PUSH here? Don't we want to show
this advice regardless of the mode?
> + advice_enabled(ADVICE_STATUS_HINTS))
> strbuf_addf(sb, _(" (use \"%s\" for details)\n"),
> "git status --ahead-behind");
> } else if (!theirs) {
> @@ -2261,7 +2321,8 @@ static void format_branch_comparison(struct strbuf *sb,
> "Your branch is ahead of '%s' by %d commits.\n",
> ours),
> branch_name, ours);
> - if (advice_enabled(ADVICE_STATUS_HINTS))
> + if ((advice_flags & BRANCH_MODE_PUSH) &&
> + advice_enabled(ADVICE_STATUS_HINTS))
Having to test the flags each time is a bit cumbersome. We could define
a couple of local variables to simplify this
bool want_push_advice = (advice_flags & BRANCH_MODE_PUSH) &&
advice_enabled(ADVICE_STATUS_HINTS);
bool want_pull_advice = advice_flags & BRANCH_MODE_PULL &&
advice_enabled(ADVICE_STATUS_HINTS);
Then we can simplify the above to
if (want_push_advice)
> strbuf_addstr(sb,
> _(" (use \"git push\" to publish your local commits)\n"));
> } else if (!ours) {
> [...]
> @@ -2285,7 +2347,8 @@ static void format_branch_comparison(struct strbuf *sb,
> "respectively.\n",
> ours + theirs),
> branch_name, ours, theirs);
> - if (show_divergence_advice &&
> + if ((advice_flags & BRANCH_MODE_PULL) &&
> + show_divergence_advice &&
If we don't want to show this can't we set show_divergance_adivce to
false when we call this function - why is it guarded by BRANCH_MODE_PULL
as well?
> advice_enabled(ADVICE_STATUS_HINTS))
> strbuf_addstr(sb,
> _(" (use \"git pull\" if you want to integrate the remote branch with yours)\n"));
> @@ -2303,6 +2366,11 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,
> const char *full_base;
> char *base;
> int upstream_is_gone = 0;
> + enum branch_mode_flags base_branch_modes = BRANCH_MODE_PULL | BRANCH_MODE_PUSH;
Here we set an enum to a value that is not a member of the enum.
> + int push_ours, push_theirs, push_sti;
> + char *full_push = NULL;
> + char *push = NULL;
> + enum branch_mode_flags push_branch_modes = 0;
>
> sti = stat_tracking_info(branch, &ours, &theirs, &full_base, 0, abf);
> if (sti < 0) {
> @@ -2314,6 +2382,16 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,
> base = refs_shorten_unambiguous_ref(get_main_ref_store(the_repository),
> full_base, 0);
>
> + push = get_remote_push_branch(branch, &full_push);
> + if (push && strcmp(base, push)) {
This is good - we only show the push branch separately if it differs
from the upstream branch.
> + push_sti = stat_branch_pair(branch->refname, full_push,
> + &push_ours, &push_theirs, abf);
> + if (push_sti >= 0) {
> + base_branch_modes = BRANCH_MODE_PULL;
> + push_branch_modes = BRANCH_MODE_PUSH;
> + }
This combined with checking "push_branch_modes & BRANCH_MODE_PUSH" below
ensures we skip the push branch if push_sti < 0. That's good but it is a
bit hard to follow.
Thanks
Phillip
> + }
> +
> if (upstream_is_gone) {
> strbuf_addf(sb,
> _("Your branch is based on '%s', but the upstream is gone.\n"),
> @@ -2322,10 +2400,19 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,
> strbuf_addstr(sb,
> _(" (use \"git branch --unset-upstream\" to fixup)\n"));
> } else {
> - format_branch_comparison(sb, sti, ours, theirs, base, abf, show_divergence_advice);
> + format_branch_comparison(sb, sti, ours, theirs, base, abf,
> + base_branch_modes, show_divergence_advice);
> + }
> +
> + if (push_branch_modes & BRANCH_MODE_PUSH) {
> + strbuf_addstr(sb, "\n");
> + format_branch_comparison(sb, push_sti, push_ours, push_theirs, push, abf,
> + push_branch_modes, 0);
> }
>
> free(base);
> + free(full_push);
> + free(push);
> return 1;
> }
>
> diff --git a/t/t6040-tracking-info.sh b/t/t6040-tracking-info.sh
> index 0b719bbae6..cf5a926dcd 100755
> --- a/t/t6040-tracking-info.sh
> +++ b/t/t6040-tracking-info.sh
> @@ -292,4 +292,266 @@ test_expect_success '--set-upstream-to @{-1}' '
> test_cmp expect actual
> '
>
> +test_expect_success 'status tracking origin/main shows only main' '
> + (
> + cd test &&
> + git checkout b4 &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch b4
> + Your branch is ahead of ${SQ}origin/main${SQ} by 2 commits.
> + (use "git push" to publish your local commits)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status --no-ahead-behind tracking origin/main shows only main' '
> + (
> + cd test &&
> + git checkout b4 &&
> + git status --no-ahead-behind >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch b4
> + Your branch and ${SQ}origin/main${SQ} refer to different commits.
> + (use "git status --ahead-behind" for details)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status shows ahead of both origin/main and feature branch' '
> + (
> + cd test &&
> + git checkout -b feature2 origin/main &&
> + git push origin HEAD &&
> + advance work &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature2
> + Your branch is ahead of ${SQ}origin/main${SQ} by 1 commit.
> +
> + Your branch is ahead of ${SQ}origin/feature2${SQ} by 1 commit.
> + (use "git push" to publish your local commits)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'checkout shows ahead of both origin/main and feature branch' '
> + (
> + cd test &&
> + git checkout feature2 >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + Your branch is ahead of ${SQ}origin/main${SQ} by 1 commit.
> +
> + Your branch is ahead of ${SQ}origin/feature2${SQ} by 1 commit.
> + (use "git push" to publish your local commits)
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'setup for ahead of tracked but diverged from main' '
> + (
> + cd test &&
> + git checkout -b feature4 origin/main &&
> + advance work1 &&
> + git checkout origin/main &&
> + advance work2 &&
> + git push origin HEAD:main &&
> + git checkout feature4 &&
> + advance work3
> + )
> +'
> +
> +test_expect_success 'status shows diverged from origin/main and ahead of feature branch' '
> + (
> + cd test &&
> + git checkout feature4 &&
> + git branch --set-upstream-to origin/main &&
> + git push origin HEAD &&
> + advance work &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature4
> + Your branch and ${SQ}origin/main${SQ} have diverged,
> + and have 3 and 1 different commits each, respectively.
> + (use "git pull" if you want to integrate the remote branch with yours)
> +
> + Your branch is ahead of ${SQ}origin/feature4${SQ} by 1 commit.
> + (use "git push" to publish your local commits)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status --no-ahead-behind shows diverged from origin/main and ahead of feature branch' '
> + (
> + cd test &&
> + git checkout feature4 &&
> + git status --no-ahead-behind >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature4
> + Your branch and ${SQ}origin/main${SQ} refer to different commits.
> +
> + Your branch and ${SQ}origin/feature4${SQ} refer to different commits.
> + (use "git status --ahead-behind" for details)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'setup upstream remote' '
> + (
> + cd test &&
> + git remote add upstream ../. &&
> + git fetch upstream &&
> + git config remote.pushDefault origin
> + )
> +'
> +
> +test_expect_success 'status with upstream remote and push.default set to origin' '
> + (
> + cd test &&
> + git checkout -b feature5 upstream/main &&
> + git push origin &&
> + advance work &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature5
> + Your branch is ahead of ${SQ}upstream/main${SQ} by 1 commit.
> +
> + Your branch is ahead of ${SQ}origin/feature5${SQ} by 1 commit.
> + (use "git push" to publish your local commits)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status with upstream remote and push.default set to origin and diverged' '
> + (
> + cd test &&
> + git checkout -b feature6 upstream/main &&
> + advance work &&
> + git push origin &&
> + git reset --hard upstream/main &&
> + advance work &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature6
> + Your branch is ahead of ${SQ}upstream/main${SQ} by 1 commit.
> +
> + Your branch and ${SQ}origin/feature6${SQ} have diverged,
> + and have 1 and 1 different commits each, respectively.
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status with upstream remote and push branch up to date' '
> + (
> + cd test &&
> + git checkout -b feature7 upstream/main &&
> + git push origin &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature7
> + Your branch is up to date with ${SQ}upstream/main${SQ}.
> +
> + Your branch is up to date with ${SQ}origin/feature7${SQ}.
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status --no-ahead-behind with upstream remote and push branch up to date' '
> + (
> + cd test &&
> + git checkout feature7 &&
> + git push origin &&
> + git status --no-ahead-behind >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature7
> + Your branch is up to date with ${SQ}upstream/main${SQ}.
> +
> + Your branch is up to date with ${SQ}origin/feature7${SQ}.
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'checkout shows push branch up to date' '
> + (
> + cd test &&
> + git checkout feature7 >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + Your branch is up to date with ${SQ}upstream/main${SQ}.
> +
> + Your branch is up to date with ${SQ}origin/feature7${SQ}.
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status shows remapped push refspec' '
> + (
> + cd test &&
> + git checkout -b feature8 origin/main &&
> + git config remote.origin.push refs/heads/feature8:refs/heads/remapped &&
> + git push &&
> + advance work &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature8
> + Your branch is ahead of ${SQ}origin/main${SQ} by 1 commit.
> +
> + Your branch is ahead of ${SQ}origin/remapped${SQ} by 1 commit.
> + (use "git push" to publish your local commits)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> +test_expect_success 'status shows remapped push refspec with upstream remote' '
> + (
> + cd test &&
> + git checkout -b feature9 upstream/main &&
> + git config remote.origin.push refs/heads/feature9:refs/heads/remapped &&
> + git push origin &&
> + advance work &&
> + git status >../actual
> + ) &&
> + cat >expect <<-EOF &&
> + On branch feature9
> + Your branch is ahead of ${SQ}upstream/main${SQ} by 1 commit.
> +
> + Your branch is ahead of ${SQ}origin/remapped${SQ} by 1 commit.
> + (use "git push" to publish your local commits)
> +
> + nothing to commit, working tree clean
> + EOF
> + test_cmp expect actual
> +'
> +
> test_done
next prev parent reply other threads:[~2026-01-09 14:56 UTC|newest]
Thread overview: 259+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-23 0:53 [PATCH] status: show default branch comparison when tracking non-default branch Harald Nordgren via GitGitGadget
2025-12-23 5:32 ` Junio C Hamano
2025-12-23 10:24 ` Harald Nordgren
2025-12-23 11:36 ` Harald Nordgren
2025-12-23 12:23 ` Chris Torek
2025-12-23 14:18 ` Harald Nordgren
2025-12-23 14:22 ` Chris Torek
2026-01-01 19:59 ` Another look? Harald Nordgren
2025-12-23 13:32 ` [PATCH] status: show default branch comparison when tracking non-default branch Junio C Hamano
2025-12-23 14:09 ` Harald Nordgren
2025-12-23 22:54 ` [PATCH v2 0/2] " Harald Nordgren via GitGitGadget
2025-12-23 22:54 ` [PATCH v2 1/2] status: show comparison with upstream default branch Harald Nordgren via GitGitGadget
2025-12-24 1:30 ` brian m. carlson
2025-12-24 1:46 ` Junio C Hamano
2026-01-01 20:01 ` Another look? Harald Nordgren
2025-12-23 22:54 ` [PATCH v2 2/2] Simplify default branch comparison logic Harald Nordgren via GitGitGadget
2025-12-24 0:00 ` [PATCH] status: show default branch comparison when tracking non-default branch Harald Nordgren
2025-12-24 9:31 ` [PATCH v3 0/3] " Harald Nordgren via GitGitGadget
2025-12-24 9:31 ` [PATCH v3 1/3] status: show comparison with upstream default branch Harald Nordgren via GitGitGadget
2025-12-24 9:31 ` [PATCH v3 2/3] Simplify default branch comparison logic Harald Nordgren via GitGitGadget
2025-12-24 9:31 ` [PATCH v3 3/3] Use repo.settings.statusGoalBranch config for status comparison Harald Nordgren via GitGitGadget
2025-12-24 10:19 ` [PATCH v4 0/4] status: show default branch comparison when tracking non-default branch Harald Nordgren via GitGitGadget
2025-12-24 10:19 ` [PATCH v4 1/4] status: show comparison with upstream default branch Harald Nordgren via GitGitGadget
2025-12-24 10:19 ` [PATCH v4 2/4] Simplify default branch comparison logic Harald Nordgren via GitGitGadget
2025-12-24 10:19 ` [PATCH v4 3/4] Use repo.settings.statusGoalBranch config for status comparison Harald Nordgren via GitGitGadget
2025-12-24 10:19 ` [PATCH v4 4/4] Rename default_remote to goal_branch Harald Nordgren via GitGitGadget
2025-12-24 10:38 ` [PATCH v5 0/5] status: show default branch comparison when tracking non-default branch Harald Nordgren via GitGitGadget
2025-12-24 10:38 ` [PATCH v5 1/5] status: show comparison with upstream default branch Harald Nordgren via GitGitGadget
2025-12-24 10:38 ` [PATCH v5 2/5] Simplify default branch comparison logic Harald Nordgren via GitGitGadget
2025-12-24 10:38 ` [PATCH v5 3/5] Use repo.settings.statusGoalBranch config for status comparison Harald Nordgren via GitGitGadget
2025-12-24 10:38 ` [PATCH v5 4/5] Rename default_remote to goal_branch Harald Nordgren via GitGitGadget
2025-12-24 10:38 ` [PATCH v5 5/5] Add warning for malformed statusGoalBranch config Harald Nordgren via GitGitGadget
2025-12-24 23:41 ` [PATCH v6 0/6] status: show default branch comparison when tracking non-default branch Harald Nordgren via GitGitGadget
2025-12-24 23:41 ` [PATCH v6 1/6] status: show comparison with upstream default branch Harald Nordgren via GitGitGadget
2025-12-24 23:41 ` [PATCH v6 2/6] Simplify default branch comparison logic Harald Nordgren via GitGitGadget
2025-12-24 23:41 ` [PATCH v6 3/6] Use repo.settings.statusGoalBranch config for status comparison Harald Nordgren via GitGitGadget
2025-12-24 23:41 ` [PATCH v6 4/6] Rename default_remote to goal_branch Harald Nordgren via GitGitGadget
2025-12-24 23:41 ` [PATCH v6 5/6] Add warning for malformed statusGoalBranch config Harald Nordgren via GitGitGadget
2025-12-24 23:41 ` [PATCH v6 6/6] Change config key to status.compareBranch Harald Nordgren via GitGitGadget
2025-12-25 8:00 ` [PATCH v6 0/6] status: show default branch comparison when tracking non-default branch Junio C Hamano
2025-12-25 9:45 ` [PATCH] " Harald Nordgren
2025-12-26 1:59 ` Junio C Hamano
2025-12-26 10:58 ` Harald Nordgren
2025-12-25 9:45 ` [PATCH v7] status: additional comparison with goal branch Harald Nordgren via GitGitGadget
2025-12-25 12:33 ` [PATCH v8] status: show comparison with configured " Harald Nordgren via GitGitGadget
2025-12-28 9:16 ` Code review? Harald Nordgren
2025-12-28 19:37 ` Junio C Hamano
2025-12-28 20:16 ` Harald Nordgren
2025-12-28 23:09 ` Ben Knoble
2025-12-29 12:17 ` Triangular workflows Harald Nordgren
2026-01-01 19:49 ` Code review? Harald Nordgren
2025-12-30 16:08 ` Harald Nordgren
2025-12-28 11:46 ` [PATCH v8] status: show comparison with configured goal branch Junio C Hamano
2025-12-28 15:46 ` Code review? Harald Nordgren
2025-12-28 15:41 ` [PATCH v9 0/2] status: show comparison with configured goal branch Harald Nordgren via GitGitGadget
2025-12-28 15:41 ` [PATCH v9 1/2] " Harald Nordgren via GitGitGadget
2025-12-28 15:41 ` [PATCH v9 2/2] improve tests Harald Nordgren via GitGitGadget
2025-12-30 16:08 ` [PATCH v10 0/3] status: show additional comparison with push branch when different from tracking branch Harald Nordgren via GitGitGadget
2025-12-30 16:08 ` [PATCH v10 1/3] status: show comparison with configured goal branch Harald Nordgren via GitGitGadget
2025-12-30 16:08 ` [PATCH v10 2/3] improve tests Harald Nordgren via GitGitGadget
2025-12-30 16:08 ` [PATCH v10 3/3] use pushRemote and tracking branch Harald Nordgren via GitGitGadget
2026-01-01 23:09 ` [PATCH v10 0/3] status: show additional comparison with push branch when different from " Junio C Hamano
2026-01-01 23:38 ` Another look? Harald Nordgren
2026-01-02 9:48 ` Kristoffer Haugsbakk
2026-01-02 11:20 ` Harald Nordgren
2026-01-12 7:34 ` Kristoffer Haugsbakk
2026-01-04 2:17 ` Junio C Hamano
2026-01-04 2:41 ` Nico Williams
2026-01-04 4:17 ` Junio C Hamano
2026-01-05 21:55 ` D. Ben Knoble
2026-01-02 11:17 ` [PATCH v11] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-02 15:18 ` Phillip Wood
2026-01-02 20:27 ` Another look? Harald Nordgren
2026-01-03 10:04 ` Phillip Wood
2026-01-03 13:00 ` Harald Nordgren
2026-01-02 21:34 ` [PATCH v12 0/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-02 21:34 ` [PATCH v12 1/2] refactor: format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-02 21:34 ` [PATCH v12 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-03 3:08 ` [PATCH v13 0/2] " Harald Nordgren via GitGitGadget
2026-01-03 3:08 ` [PATCH v13 1/2] refactor: format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-03 3:08 ` [PATCH v13 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-03 13:00 ` [PATCH v14 0/2] " Harald Nordgren via GitGitGadget
2026-01-03 13:00 ` [PATCH v14 1/2] refactor: format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-04 4:40 ` Junio C Hamano
2026-01-04 10:27 ` Another look? Harald Nordgren
2026-01-04 10:48 ` Harald Nordgren
2026-01-05 1:16 ` Junio C Hamano
2026-01-03 13:00 ` [PATCH v14 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-04 11:53 ` [PATCH v15 0/2] " Harald Nordgren via GitGitGadget
2026-01-04 11:53 ` [PATCH v15 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-04 11:53 ` [PATCH v15 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-04 23:21 ` [PATCH v16 0/2] " Harald Nordgren via GitGitGadget
2026-01-04 23:21 ` [PATCH v16 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-05 2:05 ` Junio C Hamano
2026-01-05 9:15 ` Another look? Harald Nordgren
2026-01-05 9:46 ` Harald Nordgren
2026-01-05 12:28 ` Junio C Hamano
2026-01-05 13:16 ` Harald Nordgren
2026-01-05 22:13 ` Junio C Hamano
2026-01-06 0:08 ` ABQ Harald Nordgren
2026-01-08 10:19 ` ABQ Harald Nordgren
2026-01-04 23:21 ` [PATCH v16 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-05 10:17 ` [PATCH v17 0/2] " Harald Nordgren via GitGitGadget
2026-01-05 10:17 ` [PATCH v17 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-09 14:56 ` Phillip Wood
2026-01-09 15:23 ` Harald Nordgren
2026-01-05 10:17 ` [PATCH v17 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-09 14:56 ` Phillip Wood [this message]
2026-01-09 16:00 ` [PATCH v17 1/2] refactor format_branch_comparison in preparation Harald Nordgren
2026-01-09 16:22 ` Ben Knoble
2026-01-09 16:32 ` Patrick Steinhardt
2026-01-09 18:03 ` Harald Nordgren
2026-01-12 14:45 ` Phillip Wood
2026-01-12 19:47 ` Harald Nordgren
2026-01-13 10:41 ` Phillip Wood
2026-01-13 12:11 ` Harald Nordgren
2026-01-09 16:41 ` [PATCH v18 0/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-09 16:41 ` [PATCH v18 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-09 16:41 ` [PATCH v18 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-09 18:40 ` [PATCH v19 0/2] " Harald Nordgren via GitGitGadget
2026-01-09 18:40 ` [PATCH v19 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-10 2:02 ` Junio C Hamano
2026-01-09 18:40 ` [PATCH v19 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-10 2:13 ` Junio C Hamano
2026-01-10 11:14 ` [PATCH v17 1/2] refactor format_branch_comparison in preparation Harald Nordgren
2026-01-10 17:34 ` Junio C Hamano
2026-01-10 2:21 ` [PATCH v19 2/2] status: show comparison with push remote tracking branch Junio C Hamano
2026-01-10 11:06 ` [PATCH v17 1/2] refactor format_branch_comparison in preparation Harald Nordgren
2026-01-10 14:44 ` Harald Nordgren
2026-01-10 17:31 ` Junio C Hamano
2026-01-10 20:04 ` Harald Nordgren
2026-01-11 3:39 ` Junio C Hamano
2026-01-10 13:30 ` [PATCH v20 0/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-10 13:30 ` [PATCH v20 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-10 13:30 ` [PATCH v20 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-10 15:24 ` [PATCH v21 0/2] " Harald Nordgren via GitGitGadget
2026-01-10 15:24 ` [PATCH v21 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-10 15:24 ` [PATCH v21 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-10 19:56 ` [PATCH v22 0/2] " Harald Nordgren via GitGitGadget
2026-01-10 19:56 ` [PATCH v22 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-10 19:56 ` [PATCH v22 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-12 20:26 ` [PATCH v23 0/2] " Harald Nordgren via GitGitGadget
2026-01-12 20:26 ` [PATCH v23 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-12 20:26 ` [PATCH v23 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-12 20:46 ` Junio C Hamano
2026-01-13 9:54 ` [PATCH v17 1/2] refactor format_branch_comparison in preparation Harald Nordgren
2026-01-13 9:55 ` [PATCH v24 0/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-13 9:55 ` [PATCH v24 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-13 9:55 ` [PATCH v24 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-13 12:11 ` [PATCH v25 0/2] " Harald Nordgren via GitGitGadget
2026-01-13 12:11 ` [PATCH v25 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-13 12:11 ` [PATCH v25 2/2] status: show comparison with push remote tracking branch Harald Nordgren via GitGitGadget
2026-01-13 17:03 ` Jeff King
2026-01-13 18:35 ` Triangular workflow Harald Nordgren
2026-01-13 21:40 ` Jeff King
2026-01-13 23:01 ` Harald Nordgren
2026-01-14 2:22 ` D. Ben Knoble
2026-01-14 7:59 ` Harald Nordgren
2026-01-14 21:38 ` Ben Knoble
2026-01-14 2:34 ` Jeff King
2026-01-14 7:53 ` Harald Nordgren
2026-01-14 16:24 ` Jeff King
2026-01-14 17:48 ` Harald Nordgren
2026-01-14 21:01 ` Jeff King
2026-01-14 21:38 ` Ben Knoble
2026-01-14 22:17 ` Jeff King
2026-01-15 16:17 ` D. Ben Knoble
2026-01-14 14:15 ` Junio C Hamano
2026-01-14 18:54 ` Junio C Hamano
2026-01-14 21:10 ` Jeff King
2026-01-14 21:38 ` Ben Knoble
2026-01-14 23:08 ` Harald Nordgren
2026-01-19 5:58 ` Chris Torek
2026-01-20 8:35 ` Harald Nordgren
2026-01-14 23:12 ` Harald Nordgren
2026-01-14 23:31 ` Junio C Hamano
2026-01-18 19:58 ` Harald Nordgren
2026-01-15 10:31 ` [PATCH v25 2/2] status: show comparison with push remote tracking branch Phillip Wood
2026-01-15 13:38 ` Junio C Hamano
2026-01-15 19:53 ` Jeff King
2026-01-18 19:59 ` [PATCH v26 0/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-01-18 19:59 ` [PATCH v26 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-18 19:59 ` [PATCH v26 2/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-01-19 5:14 ` Jeff King
2026-01-20 9:49 ` Memory leak Harald Nordgren
2026-01-20 13:22 ` Harald Nordgren
2026-01-20 21:42 ` Junio C Hamano
2026-01-21 18:47 ` Junio C Hamano
2026-01-21 20:49 ` Jeff King
2026-01-22 15:03 ` Harald Nordgren
2026-01-22 18:19 ` Junio C Hamano
2026-01-22 15:37 ` [PATCH v27 0/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-01-22 15:37 ` [PATCH v27 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-22 15:37 ` [PATCH v27 2/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-01-22 19:07 ` Jeff King
2026-01-22 19:22 ` [PATCH v27 0/2] " Harald Nordgren
2026-01-22 20:18 ` Junio C Hamano
2026-01-22 20:37 ` [PATCH v27 2/2] " Junio C Hamano
2026-01-22 20:56 ` Harald Nordgren
2026-01-22 21:11 ` Junio C Hamano
2026-01-22 21:36 ` Junio C Hamano
2026-01-22 22:01 ` Jeff King
2026-01-22 22:44 ` Jeff King
2026-01-22 23:06 ` Jeff King
2026-01-24 8:50 ` Harald Nordgren
2026-01-25 17:29 ` Junio C Hamano
2026-02-08 13:33 ` Harald Nordgren
2026-01-22 23:14 ` Junio C Hamano
2026-01-22 18:53 ` [PATCH v27 0/2] " Junio C Hamano
2026-01-22 19:09 ` Harald Nordgren
2026-01-22 19:20 ` Junio C Hamano
2026-01-22 19:24 ` Harald Nordgren
2026-01-22 20:07 ` [PATCH v28 " Harald Nordgren via GitGitGadget
2026-01-22 20:07 ` [PATCH v28 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-01-22 20:07 ` [PATCH v28 2/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-02-21 8:02 ` Harald Nordgren
2026-02-21 17:17 ` Junio C Hamano
2026-02-22 14:50 ` D. Ben Knoble
2026-02-23 13:30 ` Jeff King
2026-02-24 19:36 ` Harald Nordgren
2026-02-24 22:21 ` Junio C Hamano
2026-02-25 10:22 ` Harald Nordgren
2026-02-25 15:44 ` Junio C Hamano
2026-02-25 16:08 ` Jeff King
2026-02-25 16:52 ` Junio C Hamano
2026-02-26 13:50 ` Harald Nordgren
2026-02-25 17:04 ` D. Ben Knoble
2026-02-25 21:51 ` [PATCH v29 0/2] " Harald Nordgren via GitGitGadget
2026-02-25 21:51 ` [PATCH v29 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-02-25 21:51 ` [PATCH v29 2/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-02-25 23:18 ` Junio C Hamano
2026-02-26 13:47 ` Harald Nordgren
2026-02-26 10:33 ` [PATCH v30 0/2] " Harald Nordgren via GitGitGadget
2026-02-26 10:33 ` [PATCH v30 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-02-26 10:33 ` [PATCH v30 2/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-03-02 23:52 ` Junio C Hamano
2026-03-04 10:30 ` [PATCH v30 0/2] " Harald Nordgren
2026-02-26 15:28 ` Junio C Hamano
2026-03-01 19:06 ` Harald Nordgren
2026-03-01 19:25 ` Kristoffer Haugsbakk
2026-03-02 16:52 ` Junio C Hamano
2026-03-04 12:25 ` [PATCH v31 " Harald Nordgren via GitGitGadget
2026-03-04 12:25 ` [PATCH v31 1/2] refactor format_branch_comparison in preparation Harald Nordgren via GitGitGadget
2026-03-04 12:25 ` [PATCH v31 2/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren via GitGitGadget
2026-03-04 17:05 ` [PATCH v31 0/2] " Junio C Hamano
2026-03-09 9:20 ` Harald Nordgren
2026-03-09 15:10 ` Junio C Hamano
2026-01-10 17:41 ` [PATCH v20 0/2] status: show comparison with push remote tracking branch Junio C Hamano
2026-01-10 19:06 ` Harald Nordgren
2026-01-12 7:33 ` Kristoffer Haugsbakk
2025-12-23 23:11 ` [PATCH] status: show default branch comparison when tracking non-default branch Yee Cheng Chin
2025-12-23 23:59 ` Harald Nordgren
2025-12-24 0:55 ` Yee Cheng Chin
2025-12-24 0:38 ` Junio C Hamano
2025-12-24 0:49 ` Yee Cheng Chin
2025-12-24 1:44 ` Junio C Hamano
2025-12-24 10:24 ` Harald Nordgren
2026-01-01 20:05 ` Another look? Harald Nordgren
2025-12-24 1:12 ` [PATCH] status: show default branch comparison when tracking non-default branch Harald Nordgren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ba2b65a5-0e2c-41a5-a480-ec3f5ec2178a@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=haraldnordgren@gmail.com \
--cc=phillip.wood@dunelm.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.