1209 Commits

Author SHA1 Message Date
Christian Stoitner
3aa97099d6 cli: plumbing to make SnapshotStats available to cmd_status 2025-01-05 17:43:59 +01:00
Yuya Nishihara
2cb3ee5260 cli: restore: add --interactive flag
As Martin suggested, this is the reverse operation of "jj diffedit", and
supports fileset arguments.

https://github.com/jj-vcs/jj/issues/3012#issuecomment-1937353458

Closes #3012
2025-01-05 10:14:29 +09:00
Benjamin Tan
6ddc5a7b30 cli: split: remove deprecated --siblings options
This has been replaced by the `--parallelize` option in a9953b3.
2025-01-04 15:43:18 +08:00
Benjamin Tan
62c1c48c7a cli: log, op log, evolog: remove deprecated -l short alias for --limit
This removes the `-l` short alias for `--limit` for `jj log`,
`jj op log` and `jj evolog` initially deprecated in 72438fc.
2025-01-04 15:43:18 +08:00
Benjamin Tan
947281687f cli: remove deprecated jj file commands
The following deprecated commands have been removed for their `jj files`
alternatives:

- `jj cat` was deprecated for `jj file show` in 47bd6f4 and e6c2108.
- `jj chmod` was deprecated for `jj file chmod` in 47bd6f4.
- `jj files` was deprecated for `jj file list` in 5d307e6.
2025-01-04 15:43:18 +08:00
Austin Seipp
66151f0888 cli: drop support for jj init --{git, git_repo}
These were deprecated early last year in favor of `jj git init`.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2025-01-03 10:15:01 -06:00
Yuya Nishihara
641ec52540 cli: replace run_ui_editor() and edit_temp_file() with editor type 2025-01-03 10:23:58 +09:00
JDSeiler
d5b0aa20cb evolog: Implement --reversed flag
Adds some additional helper functions for converting between jj_lib's
GraphEdge and the graphlog's Edge type.
2025-01-02 20:21:59 -05:00
Yuya Nishihara
2304db6abf cli: squash: use indoc::formatdoc! to indent formatted instructions nicely 2025-01-02 15:07:09 +09:00
Yuya Nishihara
5adeb6337d cli: squash: inline move_diff() to address "too many arguments" linter warning 2025-01-02 15:07:09 +09:00
Yuya Nishihara
3cdd5717ef cli: squash: extract first half of move_diff() to separate function
I'll inline move_diff() instead. I think the current implementation is organized
this way just because we had "jj move" command.
2025-01-02 15:07:09 +09:00
Yuya Nishihara
d38d6f69aa cli: split sparse sub commands into modules 2025-01-02 15:07:00 +09:00
Yuya Nishihara
cff73841ed repo: remove &UserSettings argument from new/rewrite_commit(), use self.settings 2024-12-31 10:51:57 +09:00
Yuya Nishihara
14b52205fb repo: remove &UserSettings argument from start_transaction(), use self.settings 2024-12-31 10:51:57 +09:00
Yuya Nishihara
a001fe287a cli: config list: pre-filter variables to be printed
This is simpler, and it's nice that "No matching config" warning is printed
without spawning pager.
2024-12-28 10:28:43 +09:00
Benjamin Tan
8d560748c7 cli: help: fix typos 2024-12-28 04:08:52 +08:00
Yuya Nishihara
6374dd0cfe cli: abandon, describe: parse -rREV option properly
I often do "jj log -rREV" to preview the commits to abandon, and it's annoying
that I have to remove -r or insert space to "jj abandon ..".

The implementation is basically the same as b0c7d0a7e262.
2024-12-23 22:58:06 +09:00
Yuya Nishihara
d91e355674 cli: git clone: convert local Git remote path to slash-separated path
Since source.contains(':') can't be used for non-local path detection on
Windows, we now use gix::url for parsing. It might be stricter, but I assume it
would be more reliable.

Closes #4188
2024-12-23 09:40:52 +09:00
Yuya Nishihara
6f00c565b2 graph: inline ReverseGraphIterator to callers 2024-12-23 09:28:03 +09:00
Yuya Nishihara
78b5766993 repo, workspace: use dunce::canonicalize() to normalize paths
These paths may be printed, compared with user inputs, or passed to external
programs. It's probably better to avoid unusual "\\?\C:\" paths on Windows.

Fixes #5143
2024-12-22 09:45:37 +09:00
Scott Taylor
6baa43624c local_working_copy: store materialized conflict marker length
Storing the conflict marker length in the working copy makes conflict
parsing more consistent, and it allows us to parse valid conflict hunks
even if the user left some invalid conflict markers in the file while
resolving the conflicts.
2024-12-21 11:36:30 -06:00
Yuya Nishihara
75ce7f6b7f absorb: abandon source commit if it becomes discardable
I don't think we need --keep-emptied flag. IIRC, "jj squash" has that flag in
order not to squash commit description to the destination commits. Since
"jj absorb" never moves commit description, the source commit is preserved in
that situation.

Closes #5141
2024-12-21 09:19:54 +09:00
Yuya Nishihara
f7fd523dd8 rewrite: remove unneeded Result from CommitRewriter::reparent()
reparent() just configures new CommitBuilder instance, which should never fail.
2024-12-21 09:19:54 +09:00
Yuya Nishihara
d0f0e8dcff settings: propagate error from git_settings() and signing_backend() 2024-12-21 09:19:44 +09:00
Yuya Nishihara
52511f491e settings: inline CLI options to callers, propagate type error
This patch moves max_new_file_size() and conflict_marker_style() to CLI, but
there isn't a clear boundary whether the configuration should be managed by
UserSettings or not. I decided to move them to CLI just because we can eliminate
.optional() handling. The default parameters are defined in config/misc.toml.
2024-12-21 09:19:44 +09:00
Yuya Nishihara
3381dd2a2c cli: extract helper function that constructs SnapshotOptions
It's a bit weird that we have to construct a start-tracking matcher by caller,
but it has to be parameterized anyway.
2024-12-21 09:19:44 +09:00
Yuya Nishihara
1b4e210524 help: move "git push --remote" explanation to main paragraph, some clarification
We might add --all-remotes at some point, but "jj git push" doesn't support
bulk push right now.

https://github.com/jj-vcs/jj/discussions/4901#discussioncomment-11607150
2024-12-21 09:19:33 +09:00
Yuya Nishihara
1a0d3ae3d7 cli: keep separate copy of "raw" StackedConfig loaded from files
The next patch will introduce the resolution stage of conditional tables.

Since it wasn't easy to detect misuse of "raw" StackedConfig, I added a thin
newtype.
2024-12-19 11:09:02 +09:00
Martin von Zweigbergk
822f01648d cli: refer to revset argument using REVSET(S) in synopsis
This should help clarify that the arguments are not just simple change
ids or commit ids.
2024-12-18 10:13:44 -08:00
Martin von Zweigbergk
a414441dd6 cli: refer to fileset argument using FILESETS in synopsis
This should help clarify that the arguments are not just simple paths
(assuming `ui.allow-filesets` is not disabled).
2024-12-18 10:13:44 -08:00
Martin von Zweigbergk
b836e0ae95 docs/cli: update URLs to from martinvonz user to jj-vcs org
We just migrated to the jj-vcs GitHub org, so we should point to the
new GitHub URLs.
2024-12-17 12:44:44 -08:00
dploch
396833f803 absorb: move core functionality from cli to lib 2024-12-17 14:42:30 -05:00
Yuya Nishihara
3f115cbea5 cli: parse "jj config set" value a bit stricter, report syntax error
The same parsing function will be used for --config NAME=VALUE.

I don't think we'll add schema-based type inference anytime soon, so I moved
the value parsing to clap layer.
2024-12-17 10:33:29 +09:00
Martin von Zweigbergk
8907e692d4 help: add more keyword topics (for jj help -k)
We have the keyword-help feature now so let's use it a bit more. I'm
not sure how we should advertise it better, but that's a different
topic anyway.
2024-12-15 23:10:31 -08:00
Matt Kulukundis
c82483b088 cli: make split more explicit that it uses filesets 2024-12-15 18:44:19 -05:00
Yuya Nishihara
e50673d5ac cli: make "jj config edit" always open file, not directory
I don't think the new behavior is strictly better, but it's more consistent
with the other "jj config" commands so we can remove the special case for
"jj config edit".
2024-12-15 16:36:29 +09:00
Yuya Nishihara
ac52e43435 cli: let "config set"/"unset" continue if file to edit can be disambiguated
If the user config path was an empty directory, these commands would fail with
EISDIR instead of "can't set config in path (dirs not supported)". I think this
can be changed later to create new "$dir/config.toml" file. Maybe we can also
change the default path to ~/.config/jj directory, and load all *.toml files
from there?
2024-12-15 16:36:29 +09:00
Yuya Nishihara
bb2b956419 cli: fix "jj config path" not create new file at default path
This patch adds simpler user/repo_config_path() accessors. existing_*_path()
are kinda implementation details (for testing), so they are now private methods.
new_user_config_path() will be removed later.
2024-12-15 16:36:29 +09:00
Yuya Nishihara
ef724d2940 cli: inline write/remove_config_value_to/from_file()
They are short, and it wouldn't make much sense to do load, mutate one entry,
and save in one function.

In later patches, "jj config set"/"unset" will be changed to reuse the loaded
ConfigLayer if the layer can be unambiguously selected.
2024-12-14 22:12:41 +09:00
Yuya Nishihara
a6f705bc92 cli: git: extract helper function that sets up trunk() alias 2024-12-14 22:12:41 +09:00
David Crespo
bf24be20ef new: swap order of @ and main in doc comment
I followed the recommendation in the `jj new` doc to use `jj new main @`
to make a merge commit and ended up with a merge commit that GitHub did
not like. The PR diff included both the relevant changes from that
branch plus everything I merged in. @papertigers pointed out that
swapping the two args produces a merge commit GitHub understands better.
Happy to add a line explaining that the order matters, but it might be
too much detail for this spot. The linked doc
https://martinvonz.github.io/jj/latest/working-copy/ also does not
explain this.
2024-12-14 00:47:30 +01:00
Benjamin Tan
2504703b0d completion: add completion for jj bookmark {create,set} --revision 2024-12-12 19:56:02 +08:00
Martin von Zweigbergk
56f208338e rebase: print "Nothing changed" when source set is empty 2024-12-11 11:25:08 -08:00
Yuya Nishihara
168c7979fe working_copy: on snapshot, warn new large files and continue
I think this provides a better UX than refusing any operation due to large
files. Because untracked files won't be overwritten, it's usually safe to
continue operation ignoring the untracked files. One caveat is that new large
files can become tracked if files of the same name checked out. (see the test
case)

FWIW, the warning will be printed only once if watchman is enabled. If we use
the snapshot stats to print untracked paths in "jj status", this will be a
problem.

Closes #3616, #3912
2024-12-11 20:19:51 +09:00
Yuya Nishihara
f4fdc19d9e working_copy: plumbing to propagate untracked paths to caller 2024-12-11 20:19:51 +09:00
Yuya Nishihara
e2be4fa1ac config: migrate underlying data structure to toml_edit
This patch does not change the handling of inline tables yet. Both inline and
non-inline tables are merged as before. OTOH, .set_value() is strict about table
types because it should refuse to overwrite a table whereas an inline table
should be overwritten as a value. This matches "jj config set"/"unset"
semantics. rules_from_config() in formatter.rs uses .as_inline_table(), which is
valid because toml_edit::Value type never contains non-inline table.

Since toml_edit::Value doesn't implement PartialEq, stacking tests now use
insta::assert_snapshot!().
2024-12-10 12:11:39 +09:00
Yuya Nishihara
ec14d0820b cli: replace uses of .get_table() to include better error indication
This will also help migrate to toml_edit, where a value type doesn't provide
a deserialization helper.
2024-12-09 10:09:23 +09:00
Yuya Nishihara
6c72a3d1c1 docs: revert string formatting change of "jj help util exec"
Appears that "cargo test" parses indented text as a code block, and fails to
run doc tests. Spotted by running "cargo insta test". This doc comment is a CLI
help which is usually rendered to console, so I think markdown annotation should
be minimal.

This backs out commit ed84468cb8f3, "docs: in `jj help util exec`, use Markdown
`warning` admonition."
2024-12-08 18:04:26 +09:00
Waleed Khan
ed84468cb8 docs: in jj help util exec, use Markdown warning admonition
We're scraping the CLI help text and rendering it as markdown, so we can use an "admonition" to have this warning text render nicer in the web documentation.

You could argue that `!!! warning` is a little weird to see on the CLI. Some alternatives:

- We could opt to not design the CLI help text around markdown and skip the change to the `jj util exec` help in this commit.
- We could adopt some kind of format that can be rendered well in both contexts.
  - Could sticking to specific formatting constructs by convention.
  - Could use/create an actual translation tool from CLI format to Markdwon.
- We could keep separate versions of web and CLI documentation. (Seems like a bad idea for the foreseeable future, because we don't have the resources to constantly keep both up-to-date and sync.)

I'm in favor of just writing Markdown in the CLI help text for now.
2024-12-07 13:50:44 -08:00
Remo Senekowitsch
8c6024c71f completion: teach log about files 2024-12-06 20:44:43 +01:00