From: "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail•com>
To: git@vger•kernel.org
Cc: Harald Nordgren <haraldnordgren@gmail•com>,
Harald Nordgren <haraldnordgren@gmail•com>
Subject: [PATCH v10 3/3] use pushRemote and tracking branch
Date: Tue, 30 Dec 2025 16:08:08 +0000 [thread overview]
Message-ID: <13c2a03b0a25054cdaae030a52b1afddebce56a9.1767110888.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2138.v10.git.git.1767110888.gitgitgadget@gmail.com>
From: Harald Nordgren <haraldnordgren@gmail•com>
Use them for comparisons instead of config variable.
Signed-off-by: Harald Nordgren <haraldnordgren@gmail•com>
---
remote.c | 71 +++++-----
t/t6040-tracking-info.sh | 296 ++++++++-------------------------------
2 files changed, 96 insertions(+), 271 deletions(-)
diff --git a/remote.c b/remote.c
index 7e13c027b5..2317725f7d 100644
--- a/remote.c
+++ b/remote.c
@@ -2237,31 +2237,22 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
return stat_branch_pair(branch->refname, base, num_ours, num_theirs, abf);
}
-static char *get_goal_branch_ref(char **full_ref_out)
+static char *get_remote_push_branch(struct branch *branch, char **full_ref_out)
{
- const char *config_value;
+ const char *push_remote;
const char *resolved;
int flag;
struct strbuf ref_buf = STRBUF_INIT;
- char *slash_pos;
char *ret = NULL;
- if (repo_config_get_value(the_repository, "status.goalBranch", &config_value))
- return NULL;
-
- if (!config_value || !*config_value)
+ if (!branch)
return NULL;
- slash_pos = strchr(config_value, '/');
- if (!slash_pos || slash_pos == config_value || !slash_pos[1]) {
- warning(_("invalid value for status.goalBranch: '%s' (expected format: remote/branch)"),
- config_value);
+ push_remote = pushremote_for_branch(branch, NULL);
+ if (!push_remote)
return NULL;
- }
- strbuf_addf(&ref_buf, "refs/remotes/%.*s/%s",
- (int)(slash_pos - config_value), config_value,
- slash_pos + 1);
+ strbuf_addf(&ref_buf, "refs/remotes/%s/%s", push_remote, branch->name);
resolved = refs_resolve_ref_unsafe(
get_main_ref_store(the_repository),
@@ -2280,38 +2271,44 @@ static char *get_goal_branch_ref(char **full_ref_out)
return ret;
}
-static void format_goal_branch_comparison(struct strbuf *sb,
+static void format_push_branch_comparison(struct strbuf *sb,
const char *branch_refname,
- const char *goal_full,
- const char *goal_short,
+ const char *push_full,
+ const char *push_short,
enum ahead_behind_flags abf)
{
- int goal_ahead = 0, goal_behind = 0;
+ int push_ahead = 0, push_behind = 0;
+ int stat_result;
- if (stat_branch_pair(branch_refname, goal_full,
- &goal_ahead, &goal_behind, abf) <= 0)
+ stat_result = stat_branch_pair(branch_refname, push_full,
+ &push_ahead, &push_behind, abf);
+ if (stat_result < 0)
return;
strbuf_addstr(sb, "\n");
- if (goal_ahead > 0 && goal_behind == 0) {
+ if (stat_result == 0 || (push_ahead == 0 && push_behind == 0)) {
+ strbuf_addf(sb,
+ _("Your branch is up to date with '%s'.\n"),
+ push_short);
+ } else if (push_ahead > 0 && push_behind == 0) {
strbuf_addf(sb,
Q_("Ahead of '%s' by %d commit.\n",
"Ahead of '%s' by %d commits.\n",
- goal_ahead),
- goal_short, goal_ahead);
- } else if (goal_behind > 0 && goal_ahead == 0) {
+ push_ahead),
+ push_short, push_ahead);
+ } else if (push_behind > 0 && push_ahead == 0) {
strbuf_addf(sb,
Q_("Behind '%s' by %d commit.\n",
"Behind '%s' by %d commits.\n",
- goal_behind),
- goal_short, goal_behind);
- } else if (goal_ahead > 0 && goal_behind > 0) {
+ push_behind),
+ push_short, push_behind);
+ } else if (push_ahead > 0 && push_behind > 0) {
strbuf_addf(sb,
Q_("Diverged from '%s' by %d commit.\n",
"Diverged from '%s' by %d commits.\n",
- goal_ahead + goal_behind),
- goal_short, goal_ahead + goal_behind);
+ push_ahead + push_behind),
+ push_short, push_ahead + push_behind);
}
}
@@ -2392,15 +2389,15 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,
}
if (!upstream_is_gone && sti >= 0 && abf != AHEAD_BEHIND_QUICK) {
- char *goal_full = NULL;
- char *goal_short = get_goal_branch_ref(&goal_full);
+ char *push_full = NULL;
+ char *push_short = get_remote_push_branch(branch, &push_full);
- if (goal_short && strcmp(base, goal_short))
- format_goal_branch_comparison(sb, branch->refname, goal_full,
- goal_short, abf);
+ if (push_short && strcmp(base, push_short))
+ format_push_branch_comparison(sb, branch->refname, push_full,
+ push_short, abf);
- free(goal_short);
- free(goal_full);
+ free(push_short);
+ free(push_full);
}
free(base);
diff --git a/t/t6040-tracking-info.sh b/t/t6040-tracking-info.sh
index a875b4c73b..f27ae719ad 100755
--- a/t/t6040-tracking-info.sh
+++ b/t/t6040-tracking-info.sh
@@ -21,7 +21,6 @@ test_expect_success setup '
git clone . test &&
(
cd test &&
- git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main &&
git checkout -b b1 origin &&
git reset --hard HEAD^ &&
advance d &&
@@ -293,340 +292,169 @@ test_expect_success '--set-upstream-to @{-1}' '
test_cmp expect actual
'
-test_expect_success 'setup for ahead of non-main tracking branch' '
- (
- cd test &&
- git checkout -b feature origin/main &&
- advance feature1 &&
- git push origin feature &&
- git checkout -b work --track origin/feature &&
- advance work1 &&
- advance work2
- )
-'
-
-test_expect_success 'status shows ahead of both tracked branch and origin/main' '
+test_expect_success 'status tracking origin/main shows only main' '
(
cd test &&
- git checkout work &&
- git config status.goalBranch origin/main &&
+ git checkout b4 &&
git status >../actual
) &&
cat >expect <<-EOF &&
- On branch work
- Your branch is ahead of ${SQ}origin/feature${SQ} by 2 commits.
+ On branch b4
+ Your branch is ahead of ${SQ}origin/main${SQ} by 2 commits.
(use "git push" to publish your local commits)
- Ahead of ${SQ}origin/main${SQ} by 3 commits.
-
nothing to commit, working tree clean
EOF
test_cmp expect actual
'
-test_expect_success 'checkout shows ahead of both tracked branch and origin/main' '
- (
- cd test &&
- git checkout main &&
- git config status.goalBranch origin/main &&
- git checkout work >../actual
- ) &&
- cat >expect <<-EOF &&
- Your branch is ahead of ${SQ}origin/feature${SQ} by 2 commits.
- (use "git push" to publish your local commits)
-
- Ahead of ${SQ}origin/main${SQ} by 3 commits.
- EOF
- test_cmp expect actual
-'
-
-test_expect_success 'status tracking origin/main shows only main' '
- (
- cd test &&
- git checkout b4 &&
- git status >../actual
- ) &&
- test_grep "ahead of .origin/main. by 2 commits" actual &&
- test_grep ! "Ahead of" actual
-'
-
-test_expect_success 'setup for ahead of tracked but diverged from main' '
- (
- cd test &&
- git checkout origin/main &&
- git checkout -b oldfeature &&
- advance oldfeature1 &&
- git push origin oldfeature &&
- git checkout origin/main &&
- advance main_newer &&
- git push origin HEAD:main &&
- git checkout -b work2 --track origin/oldfeature &&
- advance work2_commit
- )
-'
-
-test_expect_success 'status shows ahead of tracked and diverged from origin/main' '
+test_expect_success 'status shows ahead of both origin/main and feature branch' '
(
cd test &&
- git checkout work2 &&
- git config status.goalBranch origin/main &&
+ git checkout -b feature2 origin/main &&
+ git push origin HEAD &&
+ advance work &&
git status >../actual
) &&
cat >expect <<-EOF &&
- On branch work2
- Your branch is ahead of ${SQ}origin/oldfeature${SQ} by 1 commit.
+ On branch feature2
+ Your branch is ahead of ${SQ}origin/main${SQ} by 1 commit.
(use "git push" to publish your local commits)
- Diverged from ${SQ}origin/main${SQ} by 3 commits.
+ Ahead of ${SQ}origin/feature2${SQ} by 1 commit.
nothing to commit, working tree clean
EOF
test_cmp expect actual
'
-test_expect_success 'setup for diverged from tracked but behind main' '
+test_expect_success 'checkout shows ahead of both origin/main and feature branch' '
(
cd test &&
- git fetch origin &&
- git checkout origin/main &&
- git checkout -b work2b &&
- git branch --set-upstream-to=origin/oldfeature &&
- git checkout origin/main &&
- advance main_extra &&
- git push origin HEAD:main
- )
-'
-
-test_expect_success 'status shows diverged from tracked and behind origin/main' '
- (
- cd test &&
- git checkout work2b &&
- git config status.goalBranch origin/main &&
- git status >../actual
+ git checkout feature2 >../actual
) &&
cat >expect <<-EOF &&
- On branch work2b
- Your branch and ${SQ}origin/oldfeature${SQ} have diverged,
- and have 1 and 1 different commits each, respectively.
- (use "git pull" if you want to integrate the remote branch with yours)
-
- Behind ${SQ}origin/main${SQ} by 1 commit.
+ Your branch is ahead of ${SQ}origin/main${SQ} by 1 commit.
+ (use "git push" to publish your local commits)
- nothing to commit, working tree clean
+ Ahead of ${SQ}origin/feature2${SQ} by 1 commit.
EOF
test_cmp expect actual
'
-test_expect_success 'setup for behind tracked but ahead of main' '
+test_expect_success 'setup for ahead of tracked but diverged from main' '
(
cd test &&
- git fetch origin &&
+ git checkout -b feature4 origin/main &&
+ advance work1 &&
git checkout origin/main &&
- git checkout -b feature3 &&
- advance feature3_1 &&
- advance feature3_2 &&
- advance feature3_3 &&
- git push origin feature3 &&
- git checkout -b work3 --track origin/feature3 &&
- git reset --hard HEAD~2
+ advance work2 &&
+ git push origin HEAD:main &&
+ git checkout feature4 &&
+ advance work3
)
'
-test_expect_success 'status shows behind tracked and ahead of origin/main' '
+test_expect_success 'status shows diverged from origin/main and ahead of feature branch' '
(
cd test &&
- git checkout work3 &&
- git config status.goalBranch origin/main &&
+ git checkout feature4 &&
+ git branch --set-upstream-to origin/main &&
+ git push origin HEAD &&
+ advance work &&
git status >../actual
) &&
cat >expect <<-EOF &&
- On branch work3
- Your branch is behind ${SQ}origin/feature3${SQ} by 2 commits, and can be fast-forwarded.
- (use "git pull" to update your local branch)
+ 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)
- Ahead of ${SQ}origin/main${SQ} by 1 commit.
+ Ahead of ${SQ}origin/feature4${SQ} by 1 commit.
nothing to commit, working tree clean
EOF
test_cmp expect actual
'
-test_expect_success 'setup upstream remote preference' '
+test_expect_success 'setup upstream remote' '
(
cd test &&
git remote add upstream ../. &&
git fetch upstream &&
- git symbolic-ref refs/remotes/upstream/HEAD refs/remotes/upstream/main
+ git config remote.pushDefault origin
)
'
-test_expect_success 'status prefers upstream remote over origin for comparison' '
+test_expect_success 'status with upstream remote and push.default set to origin' '
(
cd test &&
- git checkout work &&
- git config status.goalBranch upstream/main &&
+ git checkout -b feature5 upstream/main &&
+ git push origin &&
+ advance work &&
git status >../actual
) &&
cat >expect <<-EOF &&
- On branch work
- Your branch is ahead of ${SQ}origin/feature${SQ} by 2 commits.
+ On branch feature5
+ Your branch is ahead of ${SQ}upstream/main${SQ} by 1 commit.
(use "git push" to publish your local commits)
- Diverged from ${SQ}upstream/main${SQ} by 5 commits.
+ Ahead of ${SQ}origin/feature5${SQ} by 1 commit.
nothing to commit, working tree clean
EOF
test_cmp expect actual
'
-test_expect_success 'setup for up to date with tracked but ahead of default' '
+test_expect_success 'status with upstream remote and push.default set to origin and diverged' '
(
cd test &&
- git checkout origin/feature &&
- git checkout -b synced_feature --track origin/feature &&
- git checkout origin/main &&
- advance main_ahead &&
- git push origin HEAD:main
- )
-'
-
-test_expect_success 'status shows up to date with tracked but diverged from default' '
- (
- cd test &&
- git checkout synced_feature &&
- git config status.goalBranch upstream/main &&
+ 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 synced_feature
- Your branch is up to date with ${SQ}origin/feature${SQ}.
-
- Diverged from ${SQ}upstream/main${SQ} by 3 commits.
-
- nothing to commit, working tree clean
- EOF
- test_cmp expect actual
-'
-
-test_expect_success 'setup for up to date with tracked but ahead of origin/main' '
- (
- cd test &&
- git remote remove upstream &&
- git checkout origin/feature &&
- git checkout -b synced_feature2 --track origin/feature &&
- git checkout origin/main &&
- advance main_ahead2 &&
- git push origin HEAD:main
- )
-'
-
-test_expect_success 'status shows up to date with tracked but diverged from origin/main' '
- (
- cd test &&
- git checkout synced_feature2 &&
- git config status.goalBranch origin/main &&
- git status >../actual
- ) &&
- cat >expect <<-EOF &&
- On branch synced_feature2
- Your branch is up to date with ${SQ}origin/feature${SQ}.
-
- Diverged from ${SQ}origin/main${SQ} by 5 commits.
-
- nothing to commit, working tree clean
- EOF
- test_cmp expect actual
-'
-
-test_expect_success 'setup for up to date with tracked but purely ahead of origin/main' '
- (
- cd test &&
- git checkout origin/feature &&
- git checkout -b synced_feature3 --track origin/feature
- )
-'
-
-test_expect_success 'status shows up to date with tracked but shows default branch comparison' '
- (
- cd test &&
- git checkout synced_feature3 &&
- git config status.goalBranch origin/main &&
- git status >../actual
- ) &&
- cat >expect <<-EOF &&
- On branch synced_feature3
- Your branch is up to date with ${SQ}origin/feature${SQ}.
-
- Diverged from ${SQ}origin/main${SQ} by 5 commits.
-
- nothing to commit, working tree clean
- EOF
- test_cmp expect actual
-'
+ On branch feature6
+ Your branch is ahead of ${SQ}upstream/main${SQ} by 1 commit.
+ (use "git push" to publish your local commits)
-test_expect_success 'status with status.goalBranch unset shows no default comparison' '
- (
- cd test &&
- git checkout synced_feature3 &&
- git config --unset status.goalBranch || true &&
- git status >../actual
- ) &&
- cat >expect <<-EOF &&
- On branch synced_feature3
- Your branch is up to date with ${SQ}origin/feature${SQ}.
+ Diverged from ${SQ}origin/feature6${SQ} by 2 commits.
nothing to commit, working tree clean
EOF
test_cmp expect actual
'
-test_expect_success 'status with status.goalBranch set uses configured branch' '
+test_expect_success 'status with upstream remote and push branch up to date' '
(
cd test &&
- git checkout synced_feature3 &&
- git config status.goalBranch origin/main &&
+ git checkout -b feature7 upstream/main &&
+ git push origin &&
git status >../actual
) &&
cat >expect <<-EOF &&
- On branch synced_feature3
- Your branch is up to date with ${SQ}origin/feature${SQ}.
+ On branch feature7
+ Your branch is up to date with ${SQ}upstream/main${SQ}.
- Diverged from ${SQ}origin/main${SQ} by 5 commits.
+ 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 with status.goalBranch set to different remote/branch' '
+test_expect_success 'checkout shows push branch up to date' '
(
cd test &&
- git checkout work &&
- git config status.goalBranch origin/feature &&
- git status >../actual
- ) &&
- cat >expect <<-EOF &&
- On branch work
- Your branch is ahead of ${SQ}origin/feature${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 with status.goalBranch set to non-existent branch' '
- (
- cd test &&
- git checkout synced_feature3 &&
- git config status.goalBranch origin/nonexistent &&
- git status >../actual
+ git checkout feature7 >../actual
) &&
cat >expect <<-EOF &&
- On branch synced_feature3
- Your branch is up to date with ${SQ}origin/feature${SQ}.
+ Your branch is up to date with ${SQ}upstream/main${SQ}.
- nothing to commit, working tree clean
+ Your branch is up to date with ${SQ}origin/feature7${SQ}.
EOF
test_cmp expect actual
'
--
gitgitgadget
next prev parent reply other threads:[~2025-12-30 16:08 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 ` Harald Nordgren via GitGitGadget [this message]
2026-01-01 23:09 ` [PATCH v10 0/3] status: show additional comparison with push branch when different from tracking branch 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
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=13c2a03b0a25054cdaae030a52b1afddebce56a9.1767110888.git.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=haraldnordgren@gmail$(echo .)com \
/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