From: "Kristofer Karlsson via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Derrick Stolee <stolee@gmail.com>,
Kristofer Karlsson <krka@spotify.com>
Subject: [PATCH 0/2] commit-reach: fix !FIND_ALL early exit with v1 commit graph
Date: Mon, 29 Jun 2026 13:19:19 +0000 [thread overview]
Message-ID: <pull.2162.git.1782739162.gitgitgadget@gmail.com> (raw)
Fixes a bug introduced by 93e5b1680e (commit-reach: early exit
paint_down_to_common for single merge-base, 2025-04-10) where git merge-base
can return the wrong result.
The bug requires all of the following to trigger:
1. A v1 commit graph (topological levels only, no corrected commit dates).
Generation v2 with corrected commit dates has been the default since
2021, so only repos that have not rewritten their commit graph in over
four years would be affected.
2. git merge-base without --all (the common case, but --all is unaffected
because it disables the early exit).
3. A topology with clock skew: the correct merge base has a lower committer
date than one of its ancestors that is also a common ancestor. With date
ordering, the deeper ancestor pops first and the early exit fires before
the correct result is found.
This two-patch series:
1. Adds a test demonstrating the bug (clock-skew topology where the correct
merge base has a lower date than its ancestor)
2. Fixes it by tracking whether the queue is generation-ordered and gating
the early exit on that flag
Kristofer Karlsson (2):
t6600: add test for merge-base early exit with clock skew
commit-reach: guard !FIND_ALL early exit with generation ordering
check
commit-reach.c | 10 +++++++---
t/t6600-test-reach.sh | 41 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 3 deletions(-)
base-commit: 9aa172cd1f113276d360d4e48937dc95ef46b780
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2162%2Fspkrka%2Ffind-all-fix-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2162/spkrka/find-all-fix-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/2162
--
gitgitgadget
next reply other threads:[~2026-06-29 13:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-29 13:19 Kristofer Karlsson via GitGitGadget [this message]
2026-06-29 13:19 ` [PATCH 1/2] t6600: add test for merge-base early exit with clock skew Kristofer Karlsson via GitGitGadget
2026-06-29 13:19 ` [PATCH 2/2] commit-reach: guard !FIND_ALL early exit with generation ordering check Kristofer Karlsson via GitGitGadget
2026-06-29 17:50 ` [PATCH 0/2] commit-reach: fix !FIND_ALL early exit with v1 commit graph Junio C Hamano
2026-06-29 18:27 ` Kristofer Karlsson
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=pull.2162.git.1782739162.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=krka@spotify.com \
--cc=stolee@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