Martin von Zweigbergk
8b54ac58bd
config: wrap config errors in our own type
2022-05-10 10:21:22 -07:00
Martin von Zweigbergk
8289e87423
cli: move config-reading to new config
module
2022-05-10 10:21:22 -07:00
Martin von Zweigbergk
0bbf360432
cli: move definition of global arguments to separate struct
...
By having the global arguments on a separate struct, I think it will
be easier to improve how we resolve aliases (#292 ).
2022-05-10 09:20:45 -07:00
Martin von Zweigbergk
f5f363f079
cli: make invalid alias definition an error
2022-05-10 04:02:24 -07:00
Martin von Zweigbergk
9df1512b7d
cli: use exit code 2 for invalid utf-8
2022-05-10 04:02:24 -07:00
Martin von Zweigbergk
15070bce5f
cli: use exit code 3 for broken pipe
...
Since `clap` uses exit code 2 for bad CLI arguments, we should use a
different code for broken pipes.
2022-05-10 04:02:24 -07:00
Martin von Zweigbergk
c10247d5df
cli: move all process::exit()
calls to main.rs
...
It's cleaner to have all the calls in one place, and this structure
will also make it easier to return other errors from the `dispatch()`
function.
Note that there's still a call to `process::exit()` inside `clap` when
it fails to parse arguments.
2022-05-10 04:02:24 -07:00
Martin von Zweigbergk
1faffbb5aa
tests: check exit code on failure, and fix a bug in argument parsing
...
We didn't have any testing of exit codes on failure, other than
checking that they were not 0. This patch changes that so we always
check. Since we have the special exit code 2 (set by `clap`) for
incorrect command line, I've replaced some testing of error messages
by testing of just the exit code.
As part of this, I also fixed `jj branch --allow-backwards` to
actually require `-r` (it didn't before because having a default value
means the argument is considered always provided).
2022-05-10 04:02:24 -07:00
Martin von Zweigbergk
a4f58ae918
cli: pass Ui
as mutable reference to dispatch()
...
The function only needs a mutable reference (it doesn't store an owned
value anywhere), and this will enable the caller (i.e. `main()`) to
use the `Ui` instance after control returns from `dispatch()`.
2022-05-10 04:02:24 -07:00
dependabot[bot]
54fefdf45e
cargo: bump clap from 3.1.16 to 3.1.17
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.1.16 to 3.1.17.
- [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/v3.1.16...v3.1.17 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 22:11:08 -07:00
dependabot[bot]
deeb324a0a
cargo: bump indoc from 1.0.5 to 1.0.6
...
Bumps [indoc](https://github.com/dtolnay/indoc ) from 1.0.5 to 1.0.6.
- [Release notes](https://github.com/dtolnay/indoc/releases )
- [Commits](https://github.com/dtolnay/indoc/compare/1.0.5...1.0.6 )
---
updated-dependencies:
- dependency-name: indoc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 09:20:04 -07:00
Martin von Zweigbergk
31041ef46c
github: trigger all builds on main branch, and PR for any branch
...
The conditions for triggering Nix builds and other builds were
slightly different.
Nix builds triggered by PRs happened on PRs for any branch, not just
the `main` branch. That makes very little difference in practice
because PRs for other branches are very rare. Still, let's be
consistent. I decided to trigger the builds on PRs for any branch.
More importantly, Nix builds triggered by push were only done for
pushes to `master`, which is not what our main branch is called, so
those never happened.
2022-05-06 11:56:50 -07:00
dependabot[bot]
0d40a120f5
cargo: bump clap_complete from 3.1.3 to 3.1.4
...
Bumps [clap_complete](https://github.com/clap-rs/clap ) from 3.1.3 to 3.1.4.
- [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-v3.1.3...clap_complete-v3.1.4 )
---
updated-dependencies:
- dependency-name: clap_complete
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:07:24 -07:00
dependabot[bot]
828c995d46
cargo: bump indoc from 1.0.4 to 1.0.5
...
Bumps [indoc](https://github.com/dtolnay/indoc ) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/dtolnay/indoc/releases )
- [Commits](https://github.com/dtolnay/indoc/compare/1.0.4...1.0.5 )
---
updated-dependencies:
- dependency-name: indoc
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 08:52:46 -07:00
dependabot[bot]
c49386043b
cargo: bump clap from 3.1.15 to 3.1.16
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.1.15 to 3.1.16.
- [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/v3.1.15...v3.1.16 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 08:51:48 -07:00
Martin von Zweigbergk
b94c78545b
protos: use run_from_script()
in build.rs
...
`run_from_script()` is effectively the same as we did with `.expect()`
(print the error to stderr and exit with an error).
2022-05-05 11:46:40 -07:00
Martin von Zweigbergk
c1d0c08c03
protos: move protos.rs
into src/protos/
...
It's easier to find the file this way and not forget that it's part of
the setup for building with protos.
2022-05-05 11:46:40 -07:00
Martin von Zweigbergk
a59724b082
protos: move .proto
files to more conventional src/protos/
2022-05-05 11:46:40 -07:00
Martin von Zweigbergk
36ae9421ad
github: don't override nixpkgs version (use the lock file's version)
...
I don't know what it was overridden here, but it meant that CI didn't
notice that the package was broken (#299 ).
2022-05-05 11:14:08 -07:00
Martin von Zweigbergk
3cf1d629c8
nix: update lock file to nixpkgs with rust toolchain 1.60
...
Closes #299
2022-05-05 10:55:53 -07:00
Martin von Zweigbergk
ffc57310f6
cargo: upgrade protobuf crates to 3.0.1
...
The biggest difference in the API is that fields are now public. The
exception from that is `oneof` fields, which still require setters and
getters.
I couldn't measure any difference in performance. I didn't expect any
difference either, but it's good that it didn't seem to regress. I
timed `jj debug operation <some hash prefix>`, which will read the
whole operation log (to check that the prefix is unambiguous).
2022-05-04 17:02:11 -07:00
Martin von Zweigbergk
cba89886e5
cleanup: replace some for x in xs.iter()
by for x in &xs
2022-05-04 17:02:11 -07:00
dependabot[bot]
8a6cf4bb3b
cargo: bump serde_json from 1.0.80 to 1.0.81
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.80...v1.0.81 )
---
updated-dependencies:
- dependency-name: serde_json
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-04 08:58:48 -07:00
dependabot[bot]
1f9a47c750
cargo: bump clap from 3.1.14 to 3.1.15
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.1.14 to 3.1.15.
- [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/v3.1.14...v3.1.15 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-04 08:58:33 -07:00
dependabot[bot]
ad5cc029be
cargo: bump serde from 1.0.136 to 1.0.137
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.136 to 1.0.137.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.136...v1.0.137 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-04 08:58:00 -07:00
Martin von Zweigbergk
efa77fd024
github: run clippy on all targets (including tests and benches)
2022-05-03 15:41:03 -07:00
Martin von Zweigbergk
cce2ca06e2
github: stop running nightly clippy
...
It seems fine to wait for the clippy lints to graduate before we run
them if we can save a bit of GitHub resources.
2022-05-03 15:41:03 -07:00
Martin von Zweigbergk
e4f83e353e
errors: use custom error for failed tree merge
...
Tree merges can currently fail because of a failure to look up an
object, or because of a failure to read its contents. Both results in
`BackendError` because of a `impl From<std::io::Error> for
BackendError`. That's kind of correct in this case, but it wasn't
intentional (that impl was from `local_backend`), and we need to
making errors more specific for better error handling.
2022-05-03 06:52:00 -07:00
Waleed Khan
67be21d9cb
cleanup: fix some cargo clippy
warnings
2022-05-02 21:49:01 -07:00
Waleed Khan
7a551e584f
cli: jj branch
can accept any number of branches
2022-05-02 21:33:58 -07:00
Yuya Nishihara
f6acee41df
diff_edit: load command arguments from merge-tools.<name> config
...
Apparently, I need to pass `--merge` option to use kdiff3 as a diff editor.
We could add `diff-editor-args` or extend `diff-editor` to a list of command
arguments, but we'll eventually add stock merge tools and the configuration
would look like:
[merge-tools.<name>]
program = ...
diff-args = [...]
edit-args = [...]
merge-args = [...]
2022-05-03 12:24:05 +09:00
Martin von Zweigbergk
1f2753fd3f
cli: fix incompatibility between #271 and #273
...
The two PRs were incompatible, but it seems they were allowed to
"merge" (rebase) because the merge was conflict free?
2022-05-02 17:46:06 -07:00
Martin von Zweigbergk
305adf05cc
cli: when auto-importing from git, rebase descendants
2022-05-02 17:01:38 -07:00
Martin von Zweigbergk
726b29978d
tests: show failure in git-shared working copy after deleting commit in git
...
Since 57ba9a9409
, if the automatic import from git results in some
abandoned commit, that information gets recorded in the `MutableRepo`,
but I forgot to add a call to rebase the descendants. That causes a
failed assertion at
81a8cfefcb/lib/src/transaction.rs (L86)
. This
patch add a test showing that failure.
2022-05-02 17:01:38 -07:00
Waleed Khan
ed2b8643f8
docs: update README.md
...
The intention is to make it easier to jump to the Installation section.
2022-05-02 13:57:10 -07:00
Waleed Khan
7a99a17304
cli: make jj branch --revision/--delete/--forget
mutually-exclusive
2022-05-02 13:44:17 -07:00
Martin von Zweigbergk
7268e5608e
working_copy: propagate errors when snapshotting
...
Closes #258
2022-05-02 11:23:38 -07:00
dependabot[bot]
6649dbabae
cargo: bump serde_json from 1.0.79 to 1.0.80
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.79 to 1.0.80.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.79...v1.0.80 )
---
updated-dependencies:
- dependency-name: serde_json
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 18:08:03 +00:00
dependabot[bot]
399cec09d7
cargo: bump clap_complete from 3.1.2 to 3.1.3
...
Bumps [clap_complete](https://github.com/clap-rs/clap ) from 3.1.2 to 3.1.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/clap_complete-v3.1.2...clap_complete-v3.1.3 )
---
updated-dependencies:
- dependency-name: clap_complete
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 09:55:38 -07:00
dependabot[bot]
9ae642e11b
cargo: bump thiserror from 1.0.30 to 1.0.31
...
Bumps [thiserror](https://github.com/dtolnay/thiserror ) from 1.0.30 to 1.0.31.
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.30...1.0.31 )
---
updated-dependencies:
- dependency-name: thiserror
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 09:46:59 -07:00
dependabot[bot]
0cb1033afd
cargo: bump clap from 3.1.12 to 3.1.14
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.1.12 to 3.1.14.
- [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/v3.1.12...v3.1.14 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 08:59:26 -07:00
Waleed Khan
4e026c6c93
diff_edit: add hint when using default editor
2022-05-02 08:19:23 -07:00
Martin von Zweigbergk
543a95c653
rewrite: propagate backend errors in DescendantRebase::rebase_next()
2022-05-02 08:05:24 -07:00
Martin von Zweigbergk
96b3e05bc5
working_copy: rename write_tree()
to snapshot()
...
I think I copied the name `write_tree()` from Git, but I find it quite
confusing, since it's not clear if it write a tree to the working copy
or reads the working copy and writes a tree to the store (it's the
former).
2022-05-02 08:00:15 -07:00
Martin von Zweigbergk
90c8cb0cba
errors: add a custom error type for StackedTable
2022-05-01 23:35:09 -07:00
Martin von Zweigbergk
89476261c0
cleanup: move {read,write}_conflict()
methods earlier in Backend
trait
...
The methods working on conflicts are more closely related to those
working on files and trees, so it makes sense for them to be closer.
2022-05-01 23:35:09 -07:00
Martin von Zweigbergk
b97fd381e5
diff_edit: delete unused error variant (since 9e9727af4e
)
2022-05-01 22:58:18 -07:00
Martin von Zweigbergk
5bad272e90
docs: update stale references to -o
argument deleted in 8744015f33
2022-05-01 16:33:27 -07:00
Martin von Zweigbergk
5893b52fd1
cleanup: use while let Some(...)
instead of checking before popping
2022-05-01 13:45:00 -07:00
Waleed Khan
00a8abcdbb
diff_edit: improve error handling
...
Used to produce a message like this:
```
thread 'main' panicked at 'failed to run diff editor: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/diff_edit.rs:136:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
Now produces a message like this:
```
Error: Failed to edit diff: Error executing editor 'meld': No such file or directory (os error 2)
```
2022-04-30 13:28:38 -07:00