bisect: make abort into a non-error 975ef64c parent 9b02f868

An aborted bisect is currently treated like an error. This means that once an abort is triggered, any follow-up code from the bisection CLI doesn't get run. Change the bisector to treat an aborted command as any other evaluation and have it return an aborted result when it encounters it. This could be important for many future developments (putting bisect status in the op-log, interactive bisects, querying the state of a currently running bisect), but right now, it's mostly important for printing the reminder text about the right place to restore to in the op-log :)

authored by Daniel Morsing

1
cargo-features = []
2
3
[workspace]
4
resolver = "3"
5
members = ["cli", "lib", "lib/gen-protos", "lib/proc-macros", "lib/testutils"]
6
7
[workspace.package]
8
version = "0.37.0"
9
license = "Apache-2.0"
10
rust-version = "1.89" # NOTE: remember to update CI, mise.toml, contributing.md, changelog.md, and install-and-setup.md
11
edition = "2024"
12
readme = "README.md"
13
homepage = "https://www.jj-vcs.dev/"
14
repository = "https://github.com/jj-vcs/jj"
15
documentation = "https://docs.jj-vcs.dev/"
16
categories = ["version-control", "development-tools"]
17
keywords = ["VCS", "DVCS", "SCM", "Git", "Mercurial"]
18
19
[workspace.dependencies]
20
assert_cmd = "2.1.2"
21
assert_matches = "1.5.0"
22
async-trait = "0.1.89"
23
blake2 = "0.10.6"
24
bstr = "1.12.1"
25
clap = { version = "4.5.54", features = [
26
"derive",
27
"deprecated",
28
"wrap_help",
29
"string",
30
] }
31
clap_complete = { version = "4.5.65", features = ["unstable-dynamic"] }
32
clap_complete_nushell = "4.5.10"
33
# Update clap-markdown manually since test_generate_md_cli_help snapshot
34
# will need regenerating.
35
clap-markdown = "=0.1.5"
36
clap_mangen = "0.2.25"
37
chrono = { version = "0.4.43", default-features = false, features = [
38
"std",
39
"clock",
40
"serde",
41
] }
42
clru = "0.6.2"
43
criterion = "0.8.1"
44
crossterm = { version = "0.29", default-features = false, features = ["windows"] }
45
datatest-stable = "0.3.3"
46
digest = "0.10.7"
47
dunce = "1.0.5"
48
either = "1.15.0"
49
erased-serde = "0.4.9"
50
etcetera = "0.11.0"
51
futures = "0.3.31"
52
gix = { version = "0.78.0", default-features = false, features = [
53
"attributes",
54
"blob-diff",
55
"index",
56
"max-performance-safe",
57
"zlib-rs",
58
] }
59
globset = "0.4.18"
60
hashbrown = { version = "0.16.1", default-features = false, features = ["inline-more"] }
61
ignore = "0.4.25"
62
indexmap = { version = "2.13.0", features = ["serde"] }
63
indoc = "2.0.7"
64
insta = { version = "1.46.1", features = ["filters"] }
65
interim = { version = "0.2.1", features = ["chrono_0_4"] }
66
itertools = "0.14.0"
67
jsonschema = { version = "0.40.0", default-features = false }
68
libc = { version = "0.2.180" }
69
maplit = "1.0.2"
70
nix = "0.31.1"
71
num_cpus = "1.17.0"
72
once_cell = "1.21.3"
73
pest = "2.8.5"
74
pest_derive = "2.8.5"
75
pollster = "0.4.0"
76
pretty_assertions = "1.4.1"
77
proc-macro2 = "1.0.104"
78
proptest = "1.9.0"
79
proptest-derive = "0.7.0"
80
proptest-state-machine = "0.6.0"
81
prost = "0.14.3"
82
prost-build = "0.14.3"
83
quote = "1.0.42"
84
rand = "0.9.2"
85
rand_chacha = "0.9.0"
86
rayon = "1.10.0"
87
ref-cast = "1.0.25"
88
regex = "1.12.2"
89
rpassword = "7.4.0"
90
rustix = { version = "1.1.3", features = ["fs"] }
91
same-file = "1.0.6"
92
sapling-renderdag = "0.1.0"
93
sapling-streampager = "0.12.0"
94
scm-record = "0.10.0"
95
serde = { version = "1.0", features = ["derive", "rc"] }
96
serde_json = "1.0.149"
97
shlex = "1.3.0"
98
slab = "0.4.11"
99
smallvec = { version = "1.15.1", features = [
100
"const_generics",
101
"const_new",
102
"serde",
103
"union",
104
] }
105
strsim = "0.11.1"
106
syn = "2.0.111"
107
rustversion = "1.0.22"
108
tempfile = "3.24.0"
109
test-case = "3.3.1"
110
textwrap = "0.16.2"
111
thiserror = "2.0.17"
112
timeago = { version = "0.5.0", default-features = false }
113
tokio = { version = "1.49.0", features = ["io-util"] }
114
toml = "0.9.11"
115
toml_edit = { version = "0.24.0", features = ["serde"] }
116
tracing = "0.1.44"
117
tracing-chrome = "0.7.2"
118
tracing-subscriber = { version = "0.3.22", default-features = false, features = [
119
"std",
120
"ansi",
121
"env-filter",
122
"fmt",
123
] }
124
unicode-width = "0.2.2"
125
watchman_client = { version = "0.9.0" }
126
whoami = "2.0.2"
127
winreg = "0.55"
128
129
# put all inter-workspace libraries, i.e. those that use 'path = ...' here in
130
# their own (alphabetically sorted) block
131
132
jj-lib = { path = "lib", version = "0.37.0", default-features = false }
133
jj-lib-proc-macros = { path = "lib/proc-macros", version = "0.37.0" }
134
testutils = { path = "lib/testutils" }
135
136
[workspace.lints.clippy]
137
borrow_as_ptr = "warn"
138
cast_lossless = "warn"
139
cloned_instead_of_copied = "warn"
140
explicit_into_iter_loop = "warn"
141
explicit_iter_loop = "warn"
142
flat_map_option = "warn"
143
format_push_string = "warn"
144
implicit_clone = "warn"
145
needless_for_each = "warn"
146
ptr_as_ptr = "warn"
147
ptr_cast_constness = "warn"
148
ref_as_ptr = "warn"
149
ref_option = "warn"
150
semicolon_if_nothing_returned = "warn"
151
single_char_pattern = "warn"
152
stable_sort_primitive = "warn"
153
uninlined_format_args = "warn"
154
unnecessary_literal_bound = "warn"
155
unnecessary_semicolon = "warn"
156
unused_trait_names = "warn"
157
use_self = "warn"
158
useless_conversion = "warn"
159
while_let_loop = "warn"
160
161
[workspace.lints.rust]
162
let_underscore_drop = "warn"
163
redundant_imports = "warn"
164
165
[profile.dev.package]
166
# Insta suggests compiling these packages in opt mode for faster testing.
167
# See https://docs.rs/insta/latest/insta/#optional-faster-runs.
168
insta.opt-level = 3
169
similar.opt-level = 3
170
# Proptest suggests compiling itself and its RNG in opt mode as well.
171
# See https://proptest-rs.github.io/proptest/proptest/tips-and-best-practices.html#setting-opt-level
172
proptest.opt-level = 3
173
proptest-state-machine.opt-level = 3
174
rand_chacha.opt-level = 3
175
176
[profile.release]
177
strip = "debuginfo"
178
codegen-units = 1
179