Yuya Nishihara
8e500c0182
rewrite: do not resolve transitive parents repeatedly when updating refs
...
This was quadratic before, and was super slow if thousands of commits were
abandoned.
#4352
2024-09-01 11:11:12 +09:00
Yuya Nishihara
cb16b5afd0
rewrite: ensure that rewritten refs move across divergent entries
...
This is closer to the original behavior before 5e8d7f8c
"rewrite: update
references after rewriting all commits." References can move to divergent
commits, so they should propagate further if there are more rewrites. See
the inline comment for subtle behavior difference.
We could instead replay parent_mapping in topological order, but we would
still need to flatten abandon records.
2024-09-01 11:11:12 +09:00
Yuya Nishihara
780692c2f1
rewrite: extract new_parents() that doesn't ignore divergent entries
...
I'll use this in debug assertion. The extracted function is not named as
new_parents_with() because it's not really about parents.
2024-09-01 11:11:12 +09:00
Martin von Zweigbergk
cc15ecf7c7
op log: change "resolve concurrent" to "reconcile divergent"
...
"Concurrent" operations are not necessarily actually concurrent, so
"divergent" seems like a better name. And "reconcile" seems like a
better term for merging them, though we also sometimes use "merge".
2024-08-30 21:56:11 -07:00
dploch
f963af3f16
workspace: turn WorkspaceLoader into a trait
...
Like https://github.com/martinvonz/jj/pull/4189 , this allows extensions the ability to load the repo in an environment where the local filesystem is not accessible. This change allows such extensions to exist at the CLI layer where jj is invoked as a subprocess, rather than a library (common in testing).
2024-08-30 13:35:52 -04:00
dependabot[bot]
e004dacb37
cargo: bump tokio from 1.39.3 to 1.40.0 in the cargo-dependencies group
...
Bumps the cargo-dependencies group with 1 update: [tokio](https://github.com/tokio-rs/tokio ).
Updates `tokio` from 1.39.3 to 1.40.0
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.39.3...tokio-1.40.0 )
---
updated-dependencies:
- dependency-name: tokio
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 18:55:12 +02:00
dependabot[bot]
f9a8d78304
github: bump the github-dependencies group with 2 updates
...
Bumps the github-dependencies group with 2 updates: [actions/setup-python](https://github.com/actions/setup-python ) and [github/codeql-action](https://github.com/github/codeql-action ).
Updates `actions/setup-python` from 5.1.1 to 5.2.0
- [Release notes](https://github.com/actions/setup-python/releases )
- [Commits](39cd14951b...f677139bbe
)
Updates `github/codeql-action` from 3.26.5 to 3.26.6
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](2c779ab0d0...4dd16135b6
)
---
updated-dependencies:
- dependency-name: actions/setup-python
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-dependencies
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-29 16:07:17 +00:00
Yuya Nishihara
db6a58d315
store: switch in-memory cache to LRU-based HashMap to cap memory usage
...
I just choose "clru" because it already exists in our dependency tree thorough
gix. I don't think LRU is the best cache eviction policy for our use case (a
simpler FIFO-based one might be good enough?), but it wouldn't matter for CLI
or GUI use case. I don't see significant performance degradation with "jj log
--stat -n1000".
RwLock is replaced with Mutex since get() is inherently a mutable operation.
2024-08-29 23:33:37 +09:00
Yuya Nishihara
424623ba91
cargo: add "clru" dependency
2024-08-29 23:33:37 +09:00
Yuya Nishihara
d99a8508e4
rewrite: pass old parent ids in to mut_repo.new_parents() by slice
2024-08-29 08:59:22 +09:00
Yuya Nishihara
1fe9422a6e
rewrite: deduplicate parent ids per remap iteration
...
If merge-heavy history was abandoned, intermediate parent chains can have tons
of duplicates, and the process explodes soon. Instead, we can skip any parent
ids that have been remapped.
We can no longer detect cycles reliably, but I think that's okay so long as
the function terminates.
Fixes #4352
2024-08-29 08:59:22 +09:00
Yuya Nishihara
d76d4a90a7
rewrite: flip inner/outer loops of mut_repo.new_parents()
...
This is basically a DFS to find leaf nodes. It will help omit duplicated
parent ids early.
2024-08-29 08:59:22 +09:00
dependabot[bot]
8b6bebad40
cargo: bump rustix in the cargo-dependencies group
...
Bumps the cargo-dependencies group with 1 update: [rustix](https://github.com/bytecodealliance/rustix ).
Updates `rustix` from 0.38.34 to 0.38.35
- [Release notes](https://github.com/bytecodealliance/rustix/releases )
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.34...v0.38.35 )
---
updated-dependencies:
- dependency-name: rustix
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-28 10:49:58 -05:00
Yuya Nishihara
5af906d924
cli: change default inline threshold of color-words diffs
...
I played with max-inline-alternation = 3 for a couple of weeks, and it's pretty
good. I think somewhere between 2 and 4 is good default because one or two
remove + add sequences are easy to parse.
2024-08-28 10:33:33 +09:00
Yuya Nishihara
9c9e564dc4
conflicts: pass around conflict contents without materialization
...
We haven't decided how conflict diffs should be rendered, but whatever style
we'll choose, we'll need raw unmaterialized conflict contents.
2024-08-28 10:23:57 +09:00
Yuya Nishihara
73a8b13e4c
conflicts: split materialized value to FileConflict and OtherConflict
...
FileConflict will be changed to not materialize Merge<BString>. I also updated
the revset engine to ignore non-file conflict. It doesn't make sense to grep
conflict description.
2024-08-28 10:23:57 +09:00
Yuya Nishihara
0c14a0a9ca
conflicts: make describe() simply return string
...
I'll add more callers of id.describe(), and the output size wouldn't be large
enough to avoid allocation by using Write API.
2024-08-28 10:23:57 +09:00
Yuya Nishihara
1ba581b37c
conflicts: replace ContentHunk with BString
...
ContentHunk is basically a nice wrapper around Vec<u8>. I think it would give
little benefit for type safety.
2024-08-28 10:23:57 +09:00
dependabot[bot]
dd8ec3dece
cargo: bump clap_complete in the cargo-dependencies group
...
Bumps the cargo-dependencies group with 1 update: [clap_complete](https://github.com/clap-rs/clap ).
Updates `clap_complete` from 4.5.23 to 4.5.24
- [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.5.23...clap_complete-v4.5.24 )
---
updated-dependencies:
- dependency-name: clap_complete
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-27 16:54:37 -05:00
dependabot[bot]
44ed245c8f
cargo: bump the cargo-dependencies group with 3 updates
...
Bumps the cargo-dependencies group with 3 updates: [serde](https://github.com/serde-rs/serde ), [serde_json](https://github.com/serde-rs/json ) and [syn](https://github.com/dtolnay/syn ).
Updates `serde` from 1.0.208 to 1.0.209
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.208...v1.0.209 )
Updates `serde_json` from 1.0.125 to 1.0.127
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/1.0.125...1.0.127 )
Updates `syn` from 2.0.75 to 2.0.76
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.75...2.0.76 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: serde_json
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 18:08:56 +02:00
dependabot[bot]
708eb8dd0d
github: bump github/codeql-action in the github-dependencies group
...
Bumps the github-dependencies group with 1 update: [github/codeql-action](https://github.com/github/codeql-action ).
Updates `github/codeql-action` from 3.26.4 to 3.26.5
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](f0f3afee80...2c779ab0d0
)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 15:26:52 +00:00
Austin Seipp
d928e43073
cli: add name()
and about()
methods to CliRunner
...
Useful for third party tools to override, along with the version.
Signed-off-by: Austin Seipp <aseipp@pobox.com>
2024-08-25 12:24:02 -05:00
Yuya Nishihara
6b65f8abec
cli: move "untrack" to "file" subcommand
...
I don't think "jj untrack" is frequently used, and I think it is a "file"
command rather than "workspace".
2024-08-26 01:19:15 +09:00
Yuya Nishihara
3c15f8106a
cli: add deprecation comment to cat, chmod, and files
2024-08-26 01:19:15 +09:00
Yuya Nishihara
3762f890f6
cli: extract helper that issues deprecation warning and invoke command fn
2024-08-26 01:19:15 +09:00
Yuya Nishihara
842ebe7f92
docs: add missing single quote to revset-aliases example
...
Spotted by xzfc.
2024-08-25 23:16:29 +09:00
Yuya Nishihara
3b0b70a451
cli: fix default value of ui.allow-filesets in config schema
...
It's been enabled since 8fec7500c3
"cli: enable fileset by default."
2024-08-25 23:16:29 +09:00
Essien Ita Essien
f9dc0589c1
next/prev: update error message when no movement targets are found.
...
If movement commands don't find a target commit, they fail. However,
it's usually not intuitive why they fail because in non-edit mode the
start commit is the parent of the working commit.
Adding the start commit change hash to the error message makes it easier
for the user to figure out what is going on.
Also, specifying 'No **other** descendant...' helps make it clear what
`jj` is really looking for.
Part of #3947
2024-08-25 09:58:04 +01:00
Yuya Nishihara
8d166c7642
templater: integrate copy tracking in commit.diff() template
2024-08-24 15:47:08 +09:00
Martin von Zweigbergk
b78c83e9fe
status: report copies and renames
2024-08-23 18:51:02 -07:00
Martin von Zweigbergk
fc09be1a62
changelog: simply bullet about diff formats supporting copies/renames
...
Since only `--name-only` doesn't support copies/renames, it's simpler
to say that than to list the formats that do.
2024-08-23 18:51:02 -07:00
Martin von Zweigbergk
acdcb578bc
copies: in unsupported backends, return an empty stream instead of error
...
The native backend currently errors out if you ask it about copies. So
does the test backend. I think it's better to return an empty stream
of copies so it doesn't prevent other functionality.
2024-08-23 18:51:02 -07:00
Martin von Zweigbergk
b05593fdf5
docs: add git ls-files
to command comparison table
...
This came up in #4323 .
2024-08-22 22:30:31 -07:00
Yuya Nishihara
f1be5c59f3
cleanup: consistently import std::fmt
2024-08-23 13:05:27 +09:00
Yuya Nishihara
87fb169266
cleanup: remove redundant ::{self} from use declarations
2024-08-23 13:05:27 +09:00
Yuya Nishihara
4ffd3a3055
diff: pass tree diff stream in to inner show_*() functions as before
2024-08-23 10:29:12 +09:00
Yuya Nishihara
f5187fa063
copies: determine copy/rename operation by CopiesTreeDiffStream
...
Not all callers need this information, but I assumed it's relatively cheap to
look up the source path in the target tree compared to diffing.
This could be represented as Regular(_)|Copied(_, _)|Renamed(_, _), but it's
a bit weird if Copied and Renamed were separate variants. Instead, I decided
to wrap copy metadata in Option.
2024-08-23 10:29:12 +09:00
Yuya Nishihara
b6060ce6dd
copies: wrap source path in Option to save allocation
...
Most diff entries should have no copy sources.
2024-08-23 10:29:12 +09:00
Yuya Nishihara
08262eb152
copies: extract (source, target) path pair to separate type
...
This patch adds accessor methods as I'm going to change the underlying data
types. Since entry values are consumed separately, these methods are implemented
on CopiesTreeDiffEntryPath, not on *TreeDiffEntry.
2024-08-23 10:29:12 +09:00
Yuya Nishihara
43bf195314
merged_tree: rename diff entry field from "value" to "values"
...
It seems a slightly better, and aligns with the local variable name in
materialized_diff_stream().
2024-08-23 10:29:12 +09:00
Yuya Nishihara
10cbb513fa
copies: define CopiesTreeDiffEntry struct before stream type
...
I'm going to add some methods, and I don't want to insert them in between
the stream type and impls.
2024-08-23 10:29:12 +09:00
Matt Kulukundis
e67aac6d5c
Update dependencies and bump the version for gix
2024-08-22 20:06:34 -04:00
Matt Kulukundis
ac7fa1abb9
docs: improve md format for jj fix
2024-08-22 16:03:44 -04:00
Matt Kulukundis
8ead72e99f
formatting only: switch to Item level import ganularity
2024-08-22 14:52:54 -04:00
dependabot[bot]
c5af500724
github: bump github/codeql-action in the github-dependencies group
...
Bumps the github-dependencies group with 1 update: [github/codeql-action](https://github.com/github/codeql-action ).
Updates `github/codeql-action` from 3.26.3 to 3.26.4
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](883d8588e5...f0f3afee80
)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:29:06 +00:00
dependabot[bot]
458381f062
cargo: bump clap_complete in the cargo-dependencies group
...
Bumps the cargo-dependencies group with 1 update: [clap_complete](https://github.com/clap-rs/clap ).
Updates `clap_complete` from 4.5.20 to 4.5.22
- [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.5.20...clap_complete-v4.5.22 )
---
updated-dependencies:
- dependency-name: clap_complete
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 11:20:36 -05:00
Yuya Nishihara
352a4a0eea
copies: filter rename source entries by CopiesTreeDiffStream
2024-08-22 20:17:19 +09:00
Yuya Nishihara
47ff9ad231
copies: break method chaining in CopiesTreeDiffStream::poll_next()
...
So that it can be wrapped within a while loop + continue.
2024-08-22 20:17:19 +09:00
Yuya Nishihara
7684ab5994
diff: omit rename source entries from color-words diffs
...
Rename source entries will be handled by CopiesTreeDiffStream.
2024-08-22 20:17:19 +09:00
Yuya Nishihara
2cffcc9323
copies: provide source path mapping by CopyRecords
...
All for/has_source/target() combinations are added for API consistency.
2024-08-22 20:17:19 +09:00