Martin von Zweigbergk
0d197791a0
tests: add unsnapshotted changes in secondary workspace in recovery test
...
This adds modifed, removed, and added files in the secondary working
copy.
2024-03-16 07:30:36 -07:00
Martin von Zweigbergk
df9434bd4b
tests: use short commit ids in workspace tests
...
It doesn't look like we need the full ids for anything and the full
ids are especially distracting in the test that uses the native
backend.
2024-03-16 07:30:36 -07:00
Alexis (Poliorcetics) Bourget
93c707a469
lib: improve error message for invalid string pattern, suggesting to use one of the known one
2024-03-16 14:22:16 +01:00
Ilya Grigoriev
8600750fce
merge tools: split DiffEditWorkingCopies from DiffWorkingCopies
...
As suggested by @yuja in https://github.com/martinvonz/jj/pull/3296#discussion_r1525829712
2024-03-15 21:35:57 -07:00
Ilya Grigoriev
6a63c705aa
merge tools: rename variable to make diff for the next commit simpler
2024-03-15 21:35:57 -07:00
Yuya Nishihara
429cdb38d7
cli: don't bury GitImportError sources
...
#3301
2024-03-16 12:51:18 +09:00
Yuya Nishihara
a6ee51a998
cli: move revset::optimize() invocation from parse() to evaluate()
...
AST substitution is technically closer to parsing, but the parsed expression
can be modified further by caller. So I think it's better to do optimize() in
later pass.
revset_util::parse() is inlined.
2024-03-16 10:28:27 +09:00
Yuya Nishihara
70a2a44f42
cli: ensure revset bench does not include cost of short-prefixes computation
...
Spotted while moving revset::optimize() around. Since we don't include the
parsing cost of the target expression, we shouldn't include parsing/evaluation
cost of the short-prefixes either. The IdPrefixContext is currently populated
by WorkspaceCommandHelper::new(), but it's hard to tell.
2024-03-16 10:28:27 +09:00
Yuya Nishihara
97cf16c77d
cli: use unresolved root() when constructing immutable set expression
...
The immutable set expression has to be resolved anyway, so it's simpler to
use RevsetExpression::root().
2024-03-16 10:28:27 +09:00
Yuya Nishihara
82b6d073f1
templater: migrate global functions to table-based lookup
...
The original plan was to extend the globals table to implement "revset(expr)".
I'm not sure if that's more discoverable than "self.contained_in(revset_expr)"
method, but we can decide that later. Anyways, this patch adds typo suggestion
for global functions.
2024-03-16 10:28:19 +09:00
Yuya Nishihara
85f2f3a439
templater: generalize merge_fn_map() helper
...
The global function type is slightly different from method calls.
2024-03-16 10:28:19 +09:00
Yuya Nishihara
fa9cb72445
templater: dispatch global functions through TemplateLanguage trait
...
Prepares for migrating to table-based lookup. It's unlikely that the
implementor handles global function calls differently, but the core doesn't
have an access to the customized symbol table.
2024-03-16 10:28:19 +09:00
Yuya Nishihara
1e8bf8426c
templater: consolidate auto labeling into build_expression()
...
Now almost all build_*() functions return L::Property, so it seems more
consistent to do labeling in one place.
2024-03-16 10:28:19 +09:00
Yuya Nishihara
5ec56fb3e9
templater: inline build_method_call()
...
I don't think this function will grow to unmaintainable size, and I'm going
to add global function dispatcher there.
2024-03-16 10:28:19 +09:00
Alexis (Poliorcetics) Bourget
f9f740b263
docs: mention the signing key can be a file path too
2024-03-15 20:34:08 +01:00
Ilya Grigoriev
0120cf994b
external diff editor: move utility functions to a new file
...
This is preparation for #3292 , which will use these functions. The main
goal is to merge the parts of #3292 that are likely to cause merge
conflicts with other PRs while I polish it up.
2024-03-15 12:30:37 -07:00
Ilya Grigoriev
d5a4891b49
external diff editor: extract functions to populate and delete JJ_INSTRUCTIONS
...
This will be reused for integration with the new `:builtin-web` diff editor in #3292 .
`instructions-path_to_cleanup` is moved into DiffWorkingCopies.
DiffWorkingCopies: add instructions_path_to_cleanup
2024-03-15 12:30:37 -07:00
dependabot[bot]
a35698d7e4
cargo: bump the cargo-dependencies group with 1 update
...
Bumps the cargo-dependencies group with 1 update: [clap](https://github.com/clap-rs/clap ).
Updates `clap` from 4.5.2 to 4.5.3
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.2...v4.5.3 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-03-15 10:29:34 -07:00
Martin von Zweigbergk
3bb9fd412a
debug-tree: allow looking up tree by path and id, not just revision
...
Sometimes only a tree has been created, so we shouldn't require a
commit for `jj debug tree`.
2024-03-14 23:28:59 -07:00
Khionu Sybiern
3bbc3e5715
docs: add FAQ for why to use new-then-amend over edit
2024-03-14 11:32:53 -07:00
Khionu Sybiern
289b9bc71f
cli: update help message for jj edit
...
This change updates the language of `jj edit`'s help message to be
more clear as to the nature of the command. It also adds a
recommendation for a more idiomatic/safer workflow.
2024-03-14 11:32:53 -07:00
Evan Mesterhazy
f30857190e
Add more test cases for Index::common_ancestors
2024-03-14 12:54:13 -04:00
Evan Mesterhazy
adaedd5556
Add documentation to lib/src/index.rs and lib/src/default_index/
2024-03-14 12:54:13 -04:00
Yuya Nishihara
e3303efcf3
cli_util: inline WorkspaceCommandHelper::check_non_empty()
...
It's simple, and has no data dependency.
2024-03-14 23:51:21 +09:00
Yuya Nishihara
218b1c6c16
commit_templater: add self.immutable() method
...
I don't know how immutable revisions should be labeled by default, but users
can customize templates whatever they like.
2024-03-14 22:59:43 +09:00
Yuya Nishihara
04d5f59cbb
templater: do not rewrite non-argument errors raised from self methods
...
I'm going to add new "self.immutable()" method, which takes no arguments but
can fail if the configured revset is wrong.
2024-03-14 22:59:43 +09:00
Yuya Nishihara
78104b5e82
cli: extract function that stringifies RevsetParseError
2024-03-14 22:59:43 +09:00
Yuya Nishihara
34eb446037
cli: remove CommandError dependency from revset_util::evaluate()
...
This function will be called from the templater.
2024-03-14 22:59:43 +09:00
Yuya Nishihara
7dfe04134d
cli: check invalid declaration of immutable_heads() alias earlier
...
I just wanted to remove CommandError from parse_immutable_expression(), which
will be called from the templater, but the new error message looks also better.
2024-03-14 22:59:43 +09:00
Yuya Nishihara
8235e458ed
cli: extract primitives for user revset parsing and evaluation
...
Some of them will be called directly from the commit templater which shouldn't
know WorkspaceCommandHelper. All parameters are passed as function arguments
instead of having a nicer wrapper struct. That's because some resources (e.g.
repo and id prefix context) are also used for different purposes, and it seemed
uneasy to introduce high-level abstraction satisfying all the use cases.
2024-03-14 22:59:43 +09:00
TrashCan
33911712a2
Add archlinux instructions to install-and-setup.md
...
based upon #3289 by @roland-5
2024-03-13 21:35:08 -07:00
Yuya Nishihara
5806dbfd32
revset_graph: detach CompositeIndex, reimplement as RevWalk
...
For API consistency. It wouldn't practically matter unless we want to reuse
.iter_graph() in lazy event-driven GUI context.
I don't see significant performance difference:
- jj-0: original impl with look-ahead IndexEntry<'_> buffer
- jj-1: this patch
With dense graph
```
% hyperfine --sort command --warmup 3 --runs 10 -L bin jj-0,jj-1 \
"target/release-with-debug/{bin} -R ~/mirrors/git --ignore-working-copy log -r.. -T ''"
Benchmark 1: target/release-with-debug/jj-0 -R ~/mirrors/git --ignore-working-copy log -r.. -T ''
Time (mean ± σ): 1.367 s ± 0.008 s [User: 1.261 s, System: 0.105 s]
Range (min … max): 1.357 s … 1.380 s 10 runs
Benchmark 2: target/release-with-debug/jj-1 -R ~/mirrors/git --ignore-working-copy log -r.. -T ''
Time (mean ± σ): 1.344 s ± 0.017 s [User: 1.245 s, System: 0.099 s]
Range (min … max): 1.313 s … 1.369 s 10 runs
Relative speed comparison
1.02 ± 0.01 target/release-with-debug/jj-0 -R ~/mirrors/git --ignore-working-copy log -r.. -T ''
1.00 target/release-with-debug/jj-1 -R ~/mirrors/git --ignore-working-copy log -r.. -T ''
```
With sparse graph
```
% hyperfine --sort command --warmup 3 --runs 10 -L bin jj-0,jj-1 \
"target/release-with-debug/{bin} -R ~/mirrors/git --ignore-working-copy log -r'tags()' -T ''"
Benchmark 1: target/release-with-debug/jj-0 -R ~/mirrors/git --ignore-working-copy log -r'tags()' -T ''
Time (mean ± σ): 1.347 s ± 0.017 s [User: 1.216 s, System: 0.130 s]
Range (min … max): 1.321 s … 1.379 s 10 runs
Benchmark 2: target/release-with-debug/jj-1 -R ~/mirrors/git --ignore-working-copy log -r'tags()' -T ''
Time (mean ± σ): 1.379 s ± 0.023 s [User: 1.238 s, System: 0.140 s]
Range (min … max): 1.328 s … 1.403 s 10 runs
Relative speed comparison
1.00 target/release-with-debug/jj-0 -R ~/mirrors/git --ignore-working-copy log -r'tags()' -T ''
1.02 ± 0.02 target/release-with-debug/jj-1 -R ~/mirrors/git --ignore-working-copy log -r'tags()' -T ''
```
2024-03-14 10:07:19 +09:00
Yuya Nishihara
3c8f22456b
revset_graph: remove lifetimed IndexEntry<'_> from look_ahead buffer
...
Prepares for removing &CompositeIndex from the RevsetGraphIterator struct.
The input iterator will also be changed to position-based.
I've turned self.look_ahead.get().unwrap() into assertion, but it's not super
important here. It's just for sanity that we've mapped missing edges properly.
FWIW, we could say RevsetGraphIterator is an example of iterating *and* testing
membership of the input revset (though the yielded entries are discarded.)
2024-03-14 10:07:19 +09:00
Yuya Nishihara
699707905c
index: reorganize revset_graph_iterator as private module of default_index
...
The RevsetGraphIterator type is hidden so that the Iterator trait can be
implemented differently.
2024-03-14 10:07:19 +09:00
mrstanwell
4d71ef1518
docs: Fix FAQ reference to glossary entry for co-located repos
...
In the FAQ question "How do I integrate Jujutsu with Gerrit?", the link
to the glossary entry for "co-located repos" was pointing to the entry
for "change-id".
2024-03-13 14:14:12 -07:00
Martin von Zweigbergk
93f651d597
next/prev: make first line of help text consistent
...
This drops the trailing period for consistency with other commands,
and rephrases them a bit for consistency between each other.
2024-03-13 11:11:20 -07:00
dependabot[bot]
4fcee9b3f6
github: bump the github-dependencies group with 2 updates
...
Bumps the github-dependencies group with 2 updates: [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action ) and [DeterminateSystems/magic-nix-cache-action](https://github.com/determinatesystems/magic-nix-cache-action ).
Updates `DeterminateSystems/nix-installer-action` from 9 to 10
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases )
- [Commits](cd46bde16a...de22e16c47
)
Updates `DeterminateSystems/magic-nix-cache-action` from 3 to 4
- [Release notes](https://github.com/determinatesystems/magic-nix-cache-action/releases )
- [Commits](eeabdb0671...fc6aaceb40
)
---
updated-dependencies:
- dependency-name: DeterminateSystems/nix-installer-action
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-dependencies
- dependency-name: DeterminateSystems/magic-nix-cache-action
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-03-13 12:05:44 -05:00
Yuya Nishihara
a3839cdf47
commit_templater: allow extension methods to capture repo
2024-03-14 00:00:18 +09:00
Yuya Nishihara
9b42c81d6f
templates: add missing "\n" to builtin "root" output
2024-03-13 23:29:27 +09:00
Martin von Zweigbergk
800f0f0347
squash: accept multiple --from
revisions
...
Now you can do e.g. `jj squash --from 'foo+::' --into foo` to squash a
whole series into one commit. It doesn't need to be linear; you can
squash a bunch of siblings into another siblings, for example.
2024-03-13 05:21:05 -07:00
Martin von Zweigbergk
f3e35f1da4
description_utils: teach combine_messages()
to handle more than two sources
...
I plan to teach `jj squash --from` to accept a revset as input.
2024-03-13 05:21:05 -07:00
Martin von Zweigbergk
2b8988c620
description_util: make combine_messages() not handle abandoned commit
...
I'm going to teach the function to support combining more than two
descriptions.
2024-03-13 05:21:05 -07:00
Yuya Nishihara
17e46e0932
revset: extend lifetime of CommitId/ChangeId iterators
...
For the same reason as the previous commit. Since self.inner.positions()
basically clones the underlying evaluation tree, there is no reason to stick
to &self lifetime. Perhaps, some of the CLI utility can be changed to not
collect() the iterator.
Migrating iter_graph() requires non-trivial changes, so it will be done
separately.
2024-03-13 10:47:58 +09:00
Yuya Nishihara
3bf41d0c52
revset: extend lifetime of containing_fn()
...
This allows callers to cache the returned function at 'index lifetime. It's
important in templater. It also means the returned function could be 'static
if the index were Arc<_> and we had a trait interface to achieve that.
Option<Box<dyn ..>> is removed since RevWalk is fused.
2024-03-13 10:47:58 +09:00
Yuya Nishihara
027bd8f03a
revset: extend lifetime of internal evaluation nodes
...
This makes the whole evaluation tree 'static, and we can freely move it without
keeping the root RevsetImpl object alive.
Perhaps, "Self: 'a" can be replaced with 'static, but let's leave it for now.
It's not technically wrong to store lifetimed object in InternalRevset.
2024-03-13 10:47:58 +09:00
Yuya Nishihara
bc49b6b190
revset: make PurePredicateFn clonable
...
Prepares for dropping &self lifetime from to_predicate_fn(). All predicate
functions could be wrapped as Box::new(PurePredicateFn(Rc::new(f))) instead, but
I don't think the .clone() cost matters.
2024-03-13 10:47:58 +09:00
dploch
84118e1edd
commit_templater: add an AnyMap for extensions to cache their own info
2024-03-12 16:52:49 -04:00
dploch
6e8f1fb390
extensions_map: create a type-safe container for arbitrary objects
2024-03-12 16:52:49 -04:00
dependabot[bot]
99e8b51182
github: bump the github-dependencies group with 1 update
...
Bumps the github-dependencies group with 1 update: [actions/checkout](https://github.com/actions/checkout ).
Updates `actions/checkout` from 4.1.1 to 4.1.2
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](b4ffde65f4...9bb56186c3
)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-03-12 12:13:13 -05:00
dependabot[bot]
cca3ea1ebc
cargo: bump the cargo-dependencies group with 3 updates
...
Bumps the cargo-dependencies group with 3 updates: [anyhow](https://github.com/dtolnay/anyhow ), [proc-macro2](https://github.com/dtolnay/proc-macro2 ) and [thiserror](https://github.com/dtolnay/thiserror ).
Updates `anyhow` from 1.0.80 to 1.0.81
- [Release notes](https://github.com/dtolnay/anyhow/releases )
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.80...1.0.81 )
Updates `proc-macro2` from 1.0.78 to 1.0.79
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.78...1.0.79 )
Updates `thiserror` from 1.0.57 to 1.0.58
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.57...1.0.58 )
---
updated-dependencies:
- dependency-name: anyhow
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: proc-macro2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: thiserror
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-03-12 12:12:59 -05:00