Commit graph

1714 commits

Author SHA1 Message Date
Yuya Nishihara
424786def1 refs: leverage Conflict::flatten() and simplify() to premerge ref targets
The order of conflicted ids slightly changed since Conflict::simplify()
tries to preserve diff pairs. It shouldn't matter so long as the result is
stable.
2023-07-12 21:29:41 +09:00
Yuya Nishihara
ddaf226108 tests: make RefTarget::Conflict { .. } assertion not rely on id order
Here we don't need to care about the order at all. We have test_refs.rs
to ensure that the order is stable.
2023-07-12 21:29:41 +09:00
Yuya Nishihara
9f06bf8be5 repo: do not discard old working-copy commit if it's pointed by local branch
It would be confusing if a branch moved backwards by checking out unrelated
commit.

2023-07-12 21:29:11 +09:00
dependabot[bot]
78e9a1b34d cargo: bump the cargo-dependencies group with 1 update
Bumps the cargo-dependencies group with 1 update: [rustix](https://github.com/bytecodealliance/rustix).

- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.3...v0.38.4)

---
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>
2023-07-11 19:24:06 +02:00
Yuya Nishihara
2bed9c9112 rewrite: do not insert "removed" refs to reverse branch lookup table
It should no longer be needed since e3254fa5c4 "rewrite: don't rewrite
the "removed" side of a branch conflict."
2023-07-11 19:42:40 +09:00
Yuya Nishihara
f5f61f6bfe revset: resolve "HEAD@git" just like other pseudo @git branches
I don't think this would be practically useful, but consistent UX is
important.

Fixes 
2023-07-11 16:29:27 +09:00
Yuya Nishihara
79955d9cb3 git: do not import/export local branch named "HEAD"
Git CLI rejects it (though the data model would probably work fine with
"HEAD" branch.) This ensures that HEAD@git in JJ world is not an exported
branch named "HEAD".
2023-07-11 16:29:27 +09:00
Yuya Nishihara
c1b87d4721 git: add logic to prevent invalid branch name from being exported
I also made remote HEAD branch banned to keep it sync with parse_git_ref().
2023-07-11 16:29:27 +09:00
dependabot[bot]
e618b2c14f cargo: bump the cargo-dependencies group with 3 updates
Bumps the cargo-dependencies group with 3 updates: [regex](https://github.com/rust-lang/regex), [serde](https://github.com/serde-rs/serde) and [tokio](https://github.com/tokio-rs/tokio).


Updates `regex` from 1.9.0 to 1.9.1
- [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.9.0...1.9.1)

Updates `serde` from 1.0.167 to 1.0.168
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.167...v1.0.168)

Updates `tokio` from 1.28.2 to 1.29.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.28.2...tokio-1.29.1)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-dependencies
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-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>
2023-07-10 17:19:33 +01:00
Waleed Khan
e445d36824 fix(docs): fix protobuf job build 2023-07-10 18:56:34 +03:00
Waleed Khan
54dba51a08 docs: warn about missing docs for jj-lib crate 2023-07-10 18:28:59 +03:00
Waleed Khan
24c7b59a80 docs: add docstring for jj-lib crate 2023-07-10 18:28:59 +03:00
Waleed Khan
80b86e653d docs: add missing copyright header 2023-07-10 18:28:59 +03:00
Ilya Grigoriev
d81c599153 clippy: fix nightly clippy warnings *except* for needless_raw_string_hashes
This is (almost) a result of running

    cargo +nightly clippy --workspace --all-targets --fix \
      --  -A 'clippy::needless_raw_string_hashes'

with yesterday's nightly clippy.

https://github.com/mitsuhiko/insta/issues/389 causes numerous additional
`needless_raw_string_hashes` warnings, but it will hopefully be fixed soon.
For now, I recommend appending the second line to your invocations.
2023-07-09 22:28:22 -07:00
Yuya Nishihara
9aa308fb4a revset: include pseudo @git remote in suggestion
Since collect_branch_symbols() doesn't have to be fast, I made it simply
build a new branches map.
2023-07-10 06:17:44 +09:00
Yuya Nishihara
528f6e23c1 refs: simplify inner loop of find_pair_to_remove() too 2023-07-10 06:14:47 +09:00
Yuya Nishihara
fe3be99f0d refs: directly assign ancestor (index, id) pair in find_pair_to_remove() 2023-07-10 06:14:47 +09:00
Yuya Nishihara
9140e5b686 conflicts: relax from_legacy_form() to accept any iterable
This will help to rewrite refs::merge_ref_targets() to leverage Conflict
type. I'm not pretty sure if we'll want to do that, but this change seems
also good for the existing code.
2023-07-10 06:14:47 +09:00
Yuya Nishihara
afb1e1693e conflicts: simplify inner loop of simplify() a bit 2023-07-10 06:14:47 +09:00
Martin von Zweigbergk
aac5b7aa25 cargo: rename crates from jujutsu/jujutsu-lib to jj-cli/jj-lib
Almost everyone calls the project "jj", and there seeems to be
consensus that we should rename the crates. I originally wanted the
crates to be called `jj` and `jj-lib`, but `jj` was already
taken. `jj-cli` is probably at least as good for it anyway.

Once we've published a 0.8.0 under the new names, we'll release 0.7.1
versions under the old names with pointers to the new crates names.
2023-07-09 06:40:43 +02:00
Yuya Nishihara
3e294ca2d6 revset: do not suggest deleted local branches, suggest @remote branches
It seemed too verbose to always include @remote branches, so synced remotes
are omitted by default. If the given symbol contained '@', all remote symbols
are populated so that the distance of remote fragment is taken into account.
2023-07-09 10:42:14 +09:00
Yuya Nishihara
4a5060a618 revset: don't resolve deleted branch symbol to empty set
A deleted branch disappears immediately if there's no remote counterpart,
so I don't think a local name should be resolvable like zombie.
2023-07-09 10:42:14 +09:00
Yuya Nishihara
5c1352d31c revset: add tests for branch symbol resolution
I'm going to fix resolution of remote-only branches. This also includes some
typo tests because I need to fix suggestion as well.
2023-07-09 10:42:14 +09:00
Yuya Nishihara
2606a1073d git: extract helper that merges pseudo @git targets in branches map 2023-07-09 10:39:43 +09:00
Yuya Nishihara
895ebef55c git: refactor git_ref_filter construction in fetch()
branch_name_filter() can be dynamically dispatched, but I think branching
by Some(regex)|None is simpler here.
2023-07-09 10:08:46 +09:00
Yuya Nishihara
a934547720 git: consistently ignore unrelated refs on fetch()
Since "jj git fetch --branch '*'" doesn't import unrelated remote and local
refs, "jj git fetch" shouldn't do either.
2023-07-09 10:08:46 +09:00
Yuya Nishihara
564506a7c7 tests: fix test_fetch_prune_deleted_ref() to set up refs on remote
This is broken since aa78f97d55 "git: refactor tests by extracting some
common setup."
2023-07-09 10:08:46 +09:00
Yuya Nishihara
a21397bfff git: move remove/rename remote logic to library
These functions are somewhat similar to git::import/export_refs() in that
git_refs and branches are manipulated.
2023-07-09 10:08:07 +09:00
Yuya Nishihara
f3d6616057 view: add default formatting to RefName, use it to print unexported branches 2023-07-09 00:51:15 +09:00
Waleed Khan
cf1e1ddc2e feat(fsmonitor): add watchman debug commands 2023-07-08 18:48:14 +03:00
Waleed Khan
ef83f2beeb feat(fsmonitor): Watchman filesystem monitor implementation 2023-07-08 18:48:14 +03:00
Waleed Khan
d8705644b5 refactor(repo_path): accept AsRef<Path> in RepoPath::parse_fs_path
Used in later commit.
2023-07-08 18:48:14 +03:00
Waleed Khan
de9cbace22 refactor(working_copy): create WorkItem struct 2023-07-08 18:48:14 +03:00
Waleed Khan
092dce0625 refactor(working_copy): create SnapshotOptions struct
Required in a later commit.
2023-07-08 18:48:14 +03:00
dependabot[bot]
22a84c8e97 cargo: bump the cargo-dependencies group with 2 updates
Bumps the cargo-dependencies group with 2 updates: [serde](https://github.com/serde-rs/serde) and [thiserror](https://github.com/dtolnay/thiserror).


Updates `serde` from 1.0.166 to 1.0.167
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.166...v1.0.167)

Updates `thiserror` from 1.0.41 to 1.0.43
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.41...1.0.43)

---
updated-dependencies:
- dependency-name: serde
  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>
2023-07-07 17:52:36 +02:00
Yuya Nishihara
43aca696c8 templater: inline RefTarget::has_add()
Since RefTarget::adds() now returns a slice, we don't need has_add() to bypass
temporary allocation of Vec<CommitId>.
2023-07-08 00:06:07 +09:00
Martin von Zweigbergk
7bcb01ae5e conflicts: move repeated definition of c() in tests to module level
Also remove an obsolete "Irreducible" in a comment.
2023-07-07 16:42:07 +02:00
Martin von Zweigbergk
2bc58ebacf tree: avoid "file" in name of variables that can be non-files 2023-07-07 05:15:39 +02:00
Martin von Zweigbergk
76b1d53b1d tree: avoid redoing a RepoPath::join()
I also renamed the variable from `file` to `path` to clarify.
2023-07-07 05:15:39 +02:00
Martin von Zweigbergk
7e48033a65 tree: remove dir argument from TreeDiffIterator::new()
The argument is always the root directory.
2023-07-07 05:15:39 +02:00
Martin von Zweigbergk
1d8e9ec215 tree: inline two trivial functions 2023-07-07 05:15:39 +02:00
Martin von Zweigbergk
5da131f937 tree: add a Diff::from_options() constructor
I'm not sure `Diff` is worth keeping, but as long as we have, it seems
that it should have this constructor.
2023-07-06 15:19:58 +02:00
Martin von Zweigbergk
b738f884c4 tree: drop Diff::as_options(), use Diff::into_options() instead
We don't have any current callers that only have a reference to a
`Diff`, so we don't need `.as_options()`.
2023-07-06 15:19:58 +02:00
Martin von Zweigbergk
8af22eb83c working_copy: remove matching that's always against _ 2023-07-06 14:24:38 +02:00
Yuya Nishihara
868188c84e repo: handle empty .jj repo gracefully, include file path in error message 2023-07-06 20:48:46 +09:00
Yuya Nishihara
9560ca94c5 local_backend: remove global error conversion impls for BackendError
We don't care much about error handling in the local backend, but these
conversion impls are globally available and can be misused.
2023-07-06 20:48:46 +09:00
Yuya Nishihara
5346bd734f git_backend: translate io::Error of read_conflict() to ReadObject error
This is the last place in Git backend where io::Error is magically converted
to BackendError::Other.
2023-07-06 20:48:46 +09:00
Yuya Nishihara
4e4ca46998 git_backend: wrap TableStoreError to preserve source error object 2023-07-06 20:48:46 +09:00
Yuya Nishihara
cf8a0466c4 backend: introduce error types specific to init/load phases
Errors that may occur while loading backend would vary per backends, and
it's unlikely that these errors could be mapped to BackendError variants
other than BackendError::Other. So let's extract Other(_) of that kind as
a separate type to clarify there would be no other error variants.

Perhaps, Backend/Error will be renamed to CommitBackend/Error or
CommitStore/Error?, whereas I think BackendInit/LoadError can be shared
among store factories.
2023-07-06 20:48:46 +09:00
Yuya Nishihara
e1e75daa8e backend: make BackendError::Other preserve source error object 2023-07-06 20:48:46 +09:00