Martin von Zweigbergk
1fdc25fe45
conflicts: replace backend::Conflict
in materialize_conflict()
2023-06-04 06:48:34 -07:00
Martin von Zweigbergk
5733e3a442
conflicts: introduce generic type for conflicts
...
For support for tree-level conflicts (#1624 ), I'm probably going to
introduce a `MergedTree` type representing a set of trees to
merge. That will be similar to `Tree`, but instead of having values of
type `TreeValue`, it will have values that can represent a single
state or a conflict. The `TreeValue` type itself will eventually lose
its `Conflict` variant.
To prepare for that, this commit introduces a `Conflict<T>` type. That
type is intended to be close to what the future
`MergedTree::path_value()`, `MergedTree::entries()`, etc. The next few
commits will replace most current uses of `backend::Conflict` by this
new `conflicts::Conflict` type. They will use `Option<TreeValue>` as
type parameter. Unlike the current `backend::Conflict` type, the
explicit tracking of `None` values will let us better preserve the
ordering and tying it to the tree-level conflict's order.
2023-06-04 06:48:34 -07:00
Yuya Nishihara
78a64edb22
dag_walk: rename bfs() to dfs() because it's depth-first
...
No callers appear to rely on traversal order, so let's just fix the function
name. Maybe it was a typo.
2023-06-04 11:47:49 +09:00
Yuya Nishihara
d5d1dbcd3e
dag_walk: reorder and adjust signature of neighbors_fn for consistency
2023-06-04 11:47:49 +09:00
Yuya Nishihara
a28e672633
dag_walk: unbox topo_order_reverse() callback
2023-06-04 11:47:49 +09:00
Yuya Nishihara
3ba544414c
dag_walk: unbox bfs() callback, use iter::from_fn() to implement iterator
...
I just wanted to remove syntactic noise from callers. iter::from_fn() helps
to avoid declaring struct with lots of type parameters.
2023-06-04 11:47:49 +09:00
Yuya Nishihara
522308bb9c
dag_walk: simply pass callback function by value
2023-06-04 11:47:49 +09:00
Martin von Zweigbergk
864c17b8c4
changelog: consider renamed jj debug
commands a breaking change
...
I think I originally didn't consider changing debug commands as a
breaking change, but it's better to be conservative.
2023-06-03 19:21:43 -07:00
Martin von Zweigbergk
e86f339863
changelog: removing the jj hide
alias is a breaking change
2023-06-03 19:21:43 -07:00
dependabot[bot]
60812f8346
cargo: bump clap from 4.3.0 to 4.3.1
...
Bumps [clap](https://github.com/clap-rs/clap ) from 4.3.0 to 4.3.1.
- [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/clap_complete-v4.3.0...clap_complete-v4.3.1 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 16:23:30 +00:00
dependabot[bot]
2ca42ada12
cargo: bump clap_complete from 4.3.0 to 4.3.1
...
Bumps [clap_complete](https://github.com/clap-rs/clap ) from 4.3.0 to 4.3.1.
- [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/clap_complete-v4.3.0...clap_complete-v4.3.1 )
---
updated-dependencies:
- dependency-name: clap_complete
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 16:11:16 +00:00
Yuya Nishihara
6872051270
tree_builder: populate base trees by recursion
...
Suppose many override entries share the same parent directories, it should
be cheaper to look up the tree_cache from leaf than root. I also think
recursion is easier to follow than for loop.
2023-06-02 12:23:37 +09:00
Yuya Nishihara
941f41e62e
tree_builder: initialize base trees with the root entry
...
This helps to rewrite populate_trees() as recursive function call.
2023-06-02 12:23:37 +09:00
Yuya Nishihara
7cf96bcae0
tree_builder: ensure override file path never points to root tree
2023-06-02 12:23:37 +09:00
Yuya Nishihara
f475122b7e
tree_builder: simply map Tree to backend::Tree in later pass
...
I'll rewrite populate_trees() as a recursive function, so I want to minimize
the objects to be passed to the function.
2023-06-02 12:23:37 +09:00
Yuya Nishihara
0846d7fc8b
tree_builder: remove unneeded "mut" self
2023-06-02 12:23:37 +09:00
dependabot[bot]
633236701d
github: bump github/codeql-action from 2.3.5 to 2.3.6
...
Bumps [github/codeql-action](https://github.com/github/codeql-action ) from 2.3.5 to 2.3.6.
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](0225834cc5...83f0fe6c49
)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 09:20:29 -07:00
dependabot[bot]
59ee431467
cargo: bump criterion from 0.4.0 to 0.5.1
...
Bumps [criterion](https://github.com/bheisler/criterion.rs ) from 0.4.0 to 0.5.1.
- [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/bheisler/criterion.rs/compare/0.4.0...0.5.1 )
---
updated-dependencies:
- dependency-name: criterion
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 09:20:14 -07:00
Yuya Nishihara
3d449c55b7
tree_builder: do not omit file entry which was previously a directory
2023-06-01 09:38:06 +09:00
Yuya Nishihara
68a30c934d
tree_builder: when writing trees, rely on lexicographical order of RepoPath
2023-06-01 09:38:06 +09:00
Yuya Nishihara
ae9f7aba52
tests: add test for file-directory-file transition
...
TreeBuilder fails to handle directory-file transition right now, and leaves
the dirty file as "clean".
2023-06-01 09:38:06 +09:00
Martin von Zweigbergk
3a69fa48f6
conflicts: delete unused conflict_to_materialized_value()
2023-05-31 17:31:08 -07:00
Martin von Zweigbergk
35b19b1e28
cargo: upgrade clap
from to 4.1.11 to 4.3.0
...
I changed `test_early_args` because the first line no longer has a
redundant color reset, so now we test the `Commands:` line instead,
which has actual color (well, bold+underline anyway).
2023-05-31 12:32:26 -07:00
dependabot[bot]
581b6ef28c
cargo: bump chrono from 0.4.25 to 0.4.26
...
Bumps [chrono](https://github.com/chronotope/chrono ) from 0.4.25 to 0.4.26.
- [Release notes](https://github.com/chronotope/chrono/releases )
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md )
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.25...v0.4.26 )
---
updated-dependencies:
- dependency-name: chrono
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 16:10:03 +00:00
Martin von Zweigbergk
5653827101
cli: add pointer from error message to docs about stale working copy
2023-05-31 06:32:40 -07:00
Martin von Zweigbergk
fb17e6a50e
revset: use different errors for ambiguous commit/change IDs
...
I made a typo and got something like this:
```
Error: Commit or change id prefix "wl" is ambiguous
```
Since we can tell commit ids from change ids these days, let's make
the error message say which kind of id it is. Changing that also kind
of forced me to make a special error for empty strings. Otherwise we
would have to arbitrarily say that an empty string is a commit id or
change id. A specific error message for empty strings seems helpful,
so that's probably for the better anyway.
2023-05-31 06:28:32 -07:00
Martin von Zweigbergk
97b81a0f12
working_copy: get conflict id from the current tree
...
This prepares for allowing the base tree to be a conflict at the
root-tree level (#1624 ).
We could remove the `Conflict` variant completely. I tried doing that
and it slowed down `jj diff` by ~3% in the Linux repo with a clean
working copy with only mtime bumped on all files.
2023-05-31 06:28:15 -07:00
Martin von Zweigbergk
a5883eba15
merge: make trivial_merge()
return a reference
...
I don't know why I made it return an owned value. It seems like an
unnecessary restriction that the value implements `Clone`, so let's
return a reference instead.
2023-05-31 06:28:01 -07:00
Martin von Zweigbergk
3ca42908ee
cleanup: avoid some unnecessary uses of Cursor
...
Most of our uses of `Cursor` can be replaced by just mutable slices,
which seems simpler, so I guess that's preferred.
2023-05-30 21:06:24 -07:00
Martin von Zweigbergk
a5ef4f0f40
merge_tools: avoid re-reading edited file, read from buffer instead
...
I suspect this was just because it wasn't obvious to the author how to
get a `Read` from an in-memory buffer (I know it wasn't to me).
2023-05-30 21:06:24 -07:00
dependabot[bot]
04a107babf
cargo: bump once_cell from 1.17.1 to 1.17.2
...
Bumps [once_cell](https://github.com/matklad/once_cell ) from 1.17.1 to 1.17.2.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md )
- [Commits](https://github.com/matklad/once_cell/compare/v1.17.1...v1.17.2 )
---
updated-dependencies:
- dependency-name: once_cell
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 20:26:10 +02:00
dependabot[bot]
f27fef09d9
cargo: bump chrono from 0.4.24 to 0.4.25
...
Bumps [chrono](https://github.com/chronotope/chrono ) from 0.4.24 to 0.4.25.
- [Release notes](https://github.com/chronotope/chrono/releases )
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md )
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.24...v0.4.25 )
---
updated-dependencies:
- dependency-name: chrono
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 20:25:38 +02:00
dependabot[bot]
b9f2f634be
cargo: bump git2 from 0.17.1 to 0.17.2
...
Bumps [git2](https://github.com/rust-lang/git2-rs ) from 0.17.1 to 0.17.2.
- [Changelog](https://github.com/rust-lang/git2-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/git2-rs/compare/0.17.1...0.17.2 )
---
updated-dependencies:
- dependency-name: git2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 20:25:04 +02:00
Yuya Nishihara
f27ac22ba4
index: unify evaluate_revset() implementations
...
The lifetime is a bit tricky since CompositeIndex is a reference wrapper
whereas Index trait has no notion about ownership.
2023-05-29 08:15:40 +09:00
Yuya Nishihara
b7b9b8c88e
index: pass only CompositeIndex to default_revset_engine::evaluate()
2023-05-29 08:15:40 +09:00
Yuya Nishihara
cf5cb380bb
index: implement Index for CompositeIndex
...
We can't get rid of the other "impl Index"es because .as_composite() must
return a real reference type. Maybe we could turn CompositeIndex into an
owned wrapper, but I don't know if that would be worth the effort.
2023-05-29 08:15:40 +09:00
Yuya Nishihara
5989bdf781
index: move Index::as_any() to MutableIndex, obtain CompositeIndex from there
...
It might sound scary to add public .mutable_index() accessor, but I think
it's okay because immutable MutableIndex reference has no more power than
Index.
This allows us to implement Index for lifetime-bound type such as
CompositeIndex<'_>.
2023-05-29 08:15:40 +09:00
Yuya Nishihara
b9c8fd8ef3
index: make ReadonlyIndexImpl crate local
...
This ensure that callers will use ReadonlyIndexWrapper as the implementation
type.
2023-05-29 08:15:40 +09:00
Yuya Nishihara
93284a153f
index: obtain CompositeIndex from ReadonlyIndexWrapper
...
I'll remove Index::as_any() so that Index can be implemented for reference
wrapper.
2023-05-29 08:15:40 +09:00
Yuya Nishihara
fb77c55268
index: use as_composite() to access to index stats
...
The idea is that .as_composite() is equivalent to .as_index(), but for the
implementation type. I'm going to add "impl Index for CompositeIndex" to
clean up index references passed to revset engine.
2023-05-29 08:15:40 +09:00
Yuya Nishihara
92c1b7091b
index: make CompositeIndex copyable to clarify it is a cheap reference type
...
Well, I might change it to an owned wrapper later, but if I made such change,
the current CompositeIndex<'_> would be replaced with &CompositeIndex.
2023-05-29 08:15:40 +09:00
Martin von Zweigbergk
d047a8fbd4
tree: respect matcher.visit() when walking entries
...
This handles the basic case of where the matcher says that a whole
subtree is not matched. In the Linux repo, That's already enough to
speed up `jj --ignore-working-copy files samples` from 298 ms to 129
ms.
2023-05-28 07:28:16 -07:00
Martin von Zweigbergk
dbcecf7244
tree: rewrite recursive entries iterator to not use machine stack
...
In the same vein as c02c4168fe
.
2023-05-28 07:28:16 -07:00
Martin von Zweigbergk
a897b27770
revset: minor fixes to documentation of graph iterator
2023-05-26 15:55:29 -07:00
Martin von Zweigbergk
7bf1ab712a
progress: update progress only every 10 ms
...
In the Linux repo, this speeds up `jj diff` in a clean working copy
from 1.41 s to 881 ms.
2023-05-26 12:22:29 -07:00
dependabot[bot]
1fa88dbad0
github: bump github/codeql-action from 2.3.4 to 2.3.5
...
Bumps [github/codeql-action](https://github.com/github/codeql-action ) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](f0e3dfb303...0225834cc5
)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 17:09:56 +00:00
dependabot[bot]
fe90574b37
cargo: bump regex from 1.8.2 to 1.8.3
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.8.2 to 1.8.3.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.8.2...1.8.3 )
---
updated-dependencies:
- dependency-name: regex
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 16:11:49 +00:00
dependabot[bot]
b2ecabe89a
github: bump github/codeql-action from 2.3.3 to 2.3.4
...
Bumps [github/codeql-action](https://github.com/github/codeql-action ) from 2.3.3 to 2.3.4.
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](29b1f65c5e...f0e3dfb303
)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-05-25 16:12:55 +00:00
Aaron Bull Schaefer
d10af403a5
cleanup: fix minor typos in function names
...
> error: `mutliple` should be `multiple`
> error: `visble` should be `visible`
Found via typos:
- https://github.com/crate-ci/typos
2023-05-25 08:43:06 -07:00
Martin von Zweigbergk
d087e64abf
cleanup: consistently (?) put removed conflict terms before added ones
2023-05-25 04:24:26 -07:00