public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
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


  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$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitgitgadget@gmail$(echo .)com \
    --cc=haraldnordgren@gmail$(echo .)com \
    --cc=phillip.wood@dunelm$(echo .)org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox