jj bisect run --trust-endpoints - #10016
Open
badp wants to merge 2 commits into
Open
Conversation
badp
marked this pull request as draft
August 19, 2026 22:00
badp
force-pushed
the
bisect/verify-endpoints
branch
5 times, most recently
from
August 19, 2026 23:07
68b41c1 to
820d512
Compare
badp
marked this pull request as ready for review
August 19, 2026 23:09
josephlou5
reviewed
Aug 20, 2026
badp
force-pushed
the
bisect/verify-endpoints
branch
2 times, most recently
from
August 20, 2026 08:16
86142eb to
4198f68
Compare
josephlou5
reviewed
Aug 20, 2026
badp
force-pushed
the
bisect/verify-endpoints
branch
2 times, most recently
from
August 20, 2026 22:31
6a69afb to
6fb6f0e
Compare
josephlou5
reviewed
Aug 20, 2026
martinvonz
reviewed
Aug 22, 2026
badp
force-pushed
the
bisect/verify-endpoints
branch
3 times, most recently
from
August 27, 2026 07:56
e58b459 to
1c45377
Compare
This implements the core of jj-vcs#9188 without actually introducing a single test or parameter to trigger the new behavior.
badp
force-pushed
the
bisect/verify-endpoints
branch
2 times, most recently
from
August 27, 2026 21:14
7bebef9 to
2f29240
Compare
This commit holds the rest of the implementation for --trust-endpoints: the new argument, the new documentation, the new tests.
badp
force-pushed
the
bisect/verify-endpoints
branch
from
August 27, 2026 21:24
2f29240 to
f08672d
Compare
martinvonz
reviewed
Aug 27, 2026
| /// | ||
| /// In order for bisection to be meaningful, `COMMAND` must succeed for | ||
| /// every revision in `heads(REVSETS)`, and it must fail for every revision | ||
| /// in `parents(roots(REVSETS))`; if you are using `--find-good`, these |
Contributor
There was a problem hiding this comment.
nit: It should be parents(REVSETS) ~ REVSETS. Consider this graph:
D
|\
| C
B |
|/
A
With jj bisect run -r B::D, we want C to be included (and parents(roots(REVSETS)) won't include it).
Contributor
Author
There was a problem hiding this comment.
I guess it's implied, then, that https://github.com/jj-vcs/jj/pull/10016/changes#diff-2f65f3b286c8cd1bc2627d2173ee9519b4862b2022663a155a29eee8ade42190R161-R163 needs to change too? :)
Contributor
There was a problem hiding this comment.
Heh, yes. And obviously a test for that would be good to prevent regressions. Sorry that I didn't notice until now.
| /// In order for bisection to be meaningful, `COMMAND` must succeed for | ||
| /// every revision in `heads(REVSETS)`, and it must fail for every revision | ||
| /// in `parents(roots(REVSETS))`; if you are using `--find-good`, these | ||
| /// checks are reversed. (Note that `parents(roots(REVSETS))` contains |
Contributor
There was a problem hiding this comment.
Note that there's a mention of the revset here too
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This MR (originally stacked on top of #10015, but I'm not sure how to do that on gitlab) attempts to implement #9188:
--trust-endpointsargument is not passed,heads(REVSETS)andparents(roots(REVSETS));Bisector::next_stepreturns aNextStep::Verifystep for each of these validations,bisect::run::cmd_bisect_runfails early with aBisectionResult::VerificationFailedand some diagnosticsA few shortcuts you might not be happy about:
{evaluation:#?}s inwriteln!callsexpected_evaluationgets ugly intest_bisection)target/debug/jj bisect run --verify-endpoints false -r 'all()'on the jj repository you'll have a bit of a bad time)Checklist
If applicable:
CHANGELOG.mdREADME.md,docs/,demos/)cli/src/config-schema.json)how it works, how it's organized), including any code drafted by an LLM.
an eye towards deleting anything that is irrelevant, clarifying anything
that is confusing, and adding details that are relevant. This includes,
for example, commit descriptions, PR descriptions, and code comments.