From: Junio C Hamano <gitster@pobox.com>
To: "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org,
Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>,
"D. Ben Knoble" <ben.knoble@gmail.com>,
Phillip Wood <phillip.wood123@gmail.com>,
Jasper Mayone <me@jaspermayone.com>,
Harald Nordgren <haraldnordgren@gmail.com>
Subject: Re: [PATCH v3 0/3] branch: let --delete-merged find squash merged branches
Date: Wed, 21 Oct 2026 22:49:18 -0700 [thread overview]
Message-ID: <xmqqjynajndt.fsf@gitster.g> (raw)
In-Reply-To: <pull.2425.v3.git.git.1792585717.gitgitgadget@gmail.com> (Harald Nordgren via GitGitGadget's message of "Wed, 21 Oct 2026 12:28:34 +0000")
"Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com> writes:
> This series finds the first upstream commit since the fork point that has
> the branch's version of every file the branch changed, comparing only object
> ids. With --squashed, a file that upstream also changed counts when merging
> the branch's version into upstream's leaves it unchanged. Timed on my clone
> with 65 branches, this takes 0.5s.
It would be very surprising for the unsuspecting users to loosen the
behaviour of "--delete-merged" like this series does. As requested
elsewhere [*], do not change the behaviour of the "--delete-merged"
when no other "please make it looser" option requests otherwise.
* https://lore.kernel.org/git/20261019044005.99247-1-me@jaspermayone.com/
The attached new test illustrates the extent of damage. We add a
file on a private branch while the upstream adds two files, one of
which has an identical contents to our file, under author identity
different from ours. If we run "--delete-merged" in our repository,
we should not lose our branch that we never pushed, or asked them to
pull, or anything. But when applied on top of this series, we do.
With the following applied on top of the series, with all changes to
builtin/branch.c reverted, it passes. Of course, later tests that
assumes the looser criteria is used without an explicit opt-in will
fail with your code changes reverted, but that is to be expected.
t/t3200-branch.sh | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git c/t/t3200-branch.sh w/t/t3200-branch.sh
index f3980106fa..adbcf937b5 100755
--- c/t/t3200-branch.sh
+++ w/t/t3200-branch.sh
@@ -1925,6 +1925,39 @@ check_branches () {
test_cmp expect actual
}
+test_expect_success '--delete-merged does not delete unrelated branches' '
+ setup_repo_for_delete_merged &&
+ (
+ cd repo &&
+ git checkout -b unrelated-topic --track origin/next &&
+ test_write_lines 1 2 3 4 >file &&
+ test_write_lines 5 6 7 >elif &&
+ git add file elif &&
+ git commit -m "add file and elif" &&
+ git push origin unrelated-topic &&
+ git checkout --detach
+ ) &&
+ (
+ cd upstream &&
+ git checkout next &&
+ test_write_lines 1 2 3 4 >file &&
+ git add file &&
+ git commit --author="unrelated user <uu@example.com>" \
+ -m "unrelated commit adding an identical file" &&
+ git checkout main
+ ) &&
+ (
+ cd repo &&
+ git fetch origin &&
+ git branch --delete-merged origin/next >actual 2>&1 &&
+ test_must_be_empty actual &&
+ check_branches <<-\EOF
+ main
+ unrelated-topic
+ EOF
+ )
+'
+
test_expect_success '--delete-merged keeps cloned main without explicit push configuration' '
setup_repo_for_delete_merged &&
(
next prev parent reply other threads:[~2026-10-22 5:49 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-29 7:30 [PATCH] branch: let --delete-merged find squash merged branches Harald Nordgren via GitGitGadget
2026-09-29 7:46 ` Kristoffer Haugsbakk
2026-09-29 7:52 ` Harald Nordgren
2026-09-29 8:08 ` Kristoffer Haugsbakk
2026-09-29 11:18 ` D. Ben Knoble
2026-09-29 13:31 ` Kristoffer Haugsbakk
2026-09-29 11:26 ` D. Ben Knoble
2026-09-29 13:44 ` Harald Nordgren
2026-09-29 13:52 ` Harald Nordgren
2026-09-29 15:28 ` D. Ben Knoble
2026-09-29 18:34 ` Harald Nordgren
2026-10-04 9:54 ` Phillip Wood
2026-10-04 22:28 ` Harald Nordgren
2026-10-08 15:25 ` Phillip Wood
2026-10-08 18:42 ` Harald Nordgren
2026-10-09 8:16 ` Kristoffer Haugsbakk
2026-10-09 11:11 ` Harald Nordgren
2026-10-09 11:18 ` Harald Nordgren
2026-10-09 13:40 ` Phillip Wood
2026-10-09 13:37 ` Phillip Wood
2026-10-09 15:27 ` Harald Nordgren
2026-10-08 17:51 ` D. Ben Knoble
2026-10-09 13:34 ` Phillip Wood
2026-10-11 9:41 ` [PATCH v2 0/2] " Harald Nordgren via GitGitGadget
2026-10-11 9:41 ` [PATCH v2 1/2] " Harald Nordgren via GitGitGadget
2026-10-11 9:41 ` [PATCH v2 2/2] branch: add --no-squashed to skip the squash search Harald Nordgren via GitGitGadget
2026-10-12 0:30 ` [PATCH v2 0/2] branch: let --delete-merged find squash merged branches Junio C Hamano
2026-10-12 9:50 ` Phillip Wood
2026-10-12 14:31 ` Harald Nordgren
2026-10-12 16:50 ` Junio C Hamano
2026-10-12 17:44 ` Harald Nordgren
2026-10-13 2:23 ` Junio C Hamano
2026-10-17 22:23 ` Harald Nordgren
2026-10-19 4:40 ` Jasper Mayone
2026-10-18 15:09 ` Harald Nordgren
2026-10-12 12:41 ` Harald Nordgren
2026-10-12 15:49 ` D. Ben Knoble
2026-10-21 12:28 ` [PATCH v3 0/3] " Harald Nordgren via GitGitGadget
2026-10-21 12:28 ` [PATCH v3 1/3] branch: move the deleteMerged opt-out check into a helper Harald Nordgren via GitGitGadget
2026-10-21 12:28 ` [PATCH v3 2/3] branch: let --delete-merged find rebase merged branches Harald Nordgren via GitGitGadget
2026-10-21 12:28 ` [PATCH v3 3/3] branch: add --squashed to find squash " Harald Nordgren via GitGitGadget
2026-10-21 17:35 ` [PATCH v3 0/3] branch: let --delete-merged " Jasper Mayone
2026-10-21 18:51 ` Harald Nordgren
2026-10-22 12:55 ` D. Ben Knoble
2026-10-22 14:41 ` Harald Nordgren
2026-10-22 5:49 ` Junio C Hamano [this message]
2026-10-22 7:18 ` Harald Nordgren
2026-10-22 16:33 ` Junio C Hamano
2026-10-22 16:57 ` Junio C Hamano
2026-10-22 17:31 ` Harald Nordgren
2026-10-22 17:44 ` Jasper Mayone
2026-10-22 17:56 ` Junio C Hamano
2026-10-23 9:07 ` Harald Nordgren
2026-10-22 17:44 ` Harald Nordgren
2026-10-22 12:59 ` D. Ben Knoble
2026-10-26 8:33 ` [PATCH v4 0/4] " Harald Nordgren via GitGitGadget
2026-10-26 8:33 ` [PATCH v4 1/4] branch: move the deleteMerged opt-out check into a helper Harald Nordgren via GitGitGadget
2026-10-26 8:33 ` [PATCH v4 2/4] branch: let delete_branches() name where a branch landed Harald Nordgren via GitGitGadget
2026-10-26 8:33 ` [PATCH v4 3/4] branch: add --delete-integrated to delete rebase and squash merged branches Harald Nordgren via GitGitGadget
2026-10-26 8:33 ` [PATCH v4 4/4] branch: let --delete-integrated find branches merged onto changed files Harald Nordgren via GitGitGadget
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=xmqqjynajndt.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=ben.knoble@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=haraldnordgren@gmail.com \
--cc=kristofferhaugsbakk@fastmail.com \
--cc=me@jaspermayone.com \
--cc=phillip.wood123@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox