ok/jj
1
0
Fork 0
forked from mirrors/jj
Commit graph

1266 commits

Author SHA1 Message Date
Philip Metzger
de022aeaa7 next/prev: Implement next/prev --conflict
This allows users to jump to the next conflict in the ancestors or children of 
the start commit.

Continues work on #2126

Co-Authored-By: Noah Mayr <dev@noahmayr.com>
2024-06-20 23:29:41 +02:00
Philip Metzger
0d9000271e lib: Add RevsetExpression::filtered().
This allows users to easily filter a commit range by conflicts, which will be needed for `next/prev`
further down in the next commit. Users which benefit from it were also migrated.
2024-06-20 23:29:41 +02:00
Matt Kulukundis
c9b3d64ce5 Add background snapshotting info to debug watchman status. 2024-06-20 16:09:06 -04:00
Austin Seipp
397e96f9ae cli: let jj git push --change handle large revsets
In a repo of mine I wanted to do something like the following to push all of my
leaves to the remote as backup:

    jj git push -c 'all:heads(base::) & mine() ~ empty()'

But couldn't, because `jj git push` doesn't handle large revsets, even though
it does handle multiple `-c` arguments, so I had to work out some pipe-to-xargs
command instead.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2024-06-20 11:40:55 -05:00
Austin Seipp
aab82cd641 cli: print out short change ids with jj git push --change
The follow up diff will make `-c` accept large revsets, so it won't make any
sense to print out the original expression when multiple branches will be
created from it.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2024-06-20 11:40:55 -05:00
Yuya Nishihara
5988a00ae4 cli: branch: reject empty branch name consistently by "set"
Though "branch set" can't create new branch, this should provide a better error
message.
2024-06-20 17:00:34 +09:00
Yuya Nishihara
d4e64c46b4 cli: branch: remove trailing period from command/arg summary lines
That's the convention of clap.
2024-06-20 17:00:34 +09:00
Yuya Nishihara
844e6684bd cli: branch: remove inconsistent "pub"s from Args fields 2024-06-20 17:00:34 +09:00
Yuya Nishihara
d640645d7b cli: branch: sort cmd_branch() match arms 2024-06-20 17:00:34 +09:00
Yuya Nishihara
d2d0041333 cli: branch: rename local sub_args to args
There are no other "args" in this context.
2024-06-20 17:00:34 +09:00
Yuya Nishihara
b9c2daa408 cli: branch: move command fn next to Command/Args type 2024-06-20 17:00:34 +09:00
Yuya Nishihara
9e35b9b218 cli: branch: split to per-command module files
This is another big subcommand module. Let's split it up.

I'm not a big fan of r#move syntax, but we already have one in src/commands,
so there's no point to avoid it.
2024-06-20 17:00:34 +09:00
Martin von Zweigbergk
494de23ea5 revset: clarify error about missing working-copy commit for workspace
The error message that says something like 'Workspace "default"
doesn't have a working copy' confused me when I saw it. The problem
it's describing is that the repo view doesn't have a working-copy
commit for the given workspace id. Saying "working-copy commit"
instead of "working copy" hopefully clarifies it a bit.
2024-06-20 16:21:58 +09:00
Yuya Nishihara
68b8b1a6a6 cli: rename "debug workingcopy" to "debug working-copy"
I think "working-copy" is more readable. It's a debug command, so we can freely
rename it.
2024-06-20 09:55:18 +09:00
Yuya Nishihara
567f0db734 cli: move cmd_git() dispatcher function next to GitCommand enum 2024-06-20 09:55:18 +09:00
Yuya Nishihara
e5a3d6a2ba cli: sort debug/git subcommands lexicographically 2024-06-20 09:55:18 +09:00
Matt Kulukundis
33ab8d4371 cli: Add an option to diff to output only paths. 2024-06-19 20:27:51 -04:00
Yuya Nishihara
5f2f13a876 diff: simply pass tokenizer Fn by value 2024-06-20 08:46:26 +09:00
Matt Kulukundis
3e7ad4d23c Add jj debug snapshot command and use it in trigger
The command only takes a snapshot and avoids other overhead, so it can
be used as a target for the watchman trigger that gets installed.
2024-06-19 11:30:27 -04:00
Matt Kulukundis
bbe71626ee Split jj debug command into multiple files 2024-06-18 21:23:18 -04:00
Matt Kulukundis
2364cf2c21 Split all git commands into separate files
Moved commands are `git clone`, `git export`, `git fetch`, `git import`,
`git init`, `git push`, `git remote`, and `git submodule`.
2024-06-18 19:16:24 -04:00
Yuya Nishihara
b8e921eeae cli: branch: add "move" command that can update branches by revset or name
This basically supersedes the current "branch set" command. The plan is to turn
"branch set" into an "upsert" command, and deprecate "branch create". (#3584)
Maybe we can also add "branch set --new" flag to only allow creation of new
branches. One reason behind this proposed change is that "set" usually allows
both "creation" and "update". However, we also need a typo-safe version of
"set" to not create new branches by accident.

"jj branch move" is useful when advancing ancestor branches. Let's say you've
added a couple of commits on top of an existing PR branch, you can advance the
branch by "jj branch move --from 'heads(::@- & branches())' --to @-". If this
pattern is super common, maybe we can add --advance flag for short.

One drawback of this change is that "git branch --move" is equivalent to
"jj branch rename". I personally don't find this is confusing, but it's true
that "move" sometimes means "rename".
2024-06-18 12:48:32 +09:00
Yuya Nishihara
b52b0646c2 cli: branch: restore is_fast_forward() function
This basically backs out 8706fadca1 "cli: inline check for
non-fast-forwardable branch move." I'm going to add another subcommand that
moves existing branches.
2024-06-18 12:48:32 +09:00
Yuya Nishihara
4ab1fc9bfe cli: file: sort subcommands chronologically
Otherwise they wouldn't be sorted in help. I also reordered the match statement.
Since subcommands are split to per-file modules, there's no point to keep some
logical ordering.
2024-06-18 10:45:06 +09:00
Yuya Nishihara
8e5671975c ui: remove Option<_> wrapping from ui.hint_() helpers
It's cumbersome to unwrap the Option just to print a short hint message. Let's
send the message to null output instead.
2024-06-18 09:37:23 +09:00
Yuya Nishihara
a162e4f1a4 cli: don't reuse ui.hint_default() instance to print multiple hints
ui.hint_*() calls will be inlined by the next commit.
2024-06-18 09:37:23 +09:00
Yuya Nishihara
1ab0c91e51 cli: inline labeling of trackable remote branches hints
This makes it clear that these hints are printed only if status output is
enabled.
2024-06-18 09:37:23 +09:00
Yuya Nishihara
b9e29b009d formatter: add .labeled().with_heading() helper
I'm going to add a few callers of .with_heading() outside of ui.rs.
2024-06-18 09:37:23 +09:00
Yuya Nishihara
57022d6f04 ui: replace qualified std::io path
The "io" module is imported.
2024-06-18 09:37:23 +09:00
Matt Kulukundis
5d307e628b cli: create jj file list and deprecate jj files 2024-06-17 14:13:36 -04:00
Matt Kulukundis
47bd6f4aa4 feat: Create a file command containing print and chmod
- rearrange the files involved to be more clear about structure
- deprecate existing `jj cat` and `jj chmod`
2024-06-17 12:17:49 -04:00
Martin von Zweigbergk
f8a5ad0c7a conflicts: propagate error from conflict materialization 2024-06-17 14:33:29 +09:00
Matt Kulukundis
8aa71f58f3 feat: add an option to monitor the filesystem asynchronously
- make an internal set of watchman extensions until the client api gets
  updates with triggers
- add a config option to enable using triggers in watchman

Co-authored-by: Waleed Khan <me@waleedkhan.name>
2024-06-16 23:24:22 -04:00
Ilya Grigoriev
ce0c53796c test_generate_cli_reference: fixup to 52c415e, remove mysterious comment
If I can't tell what this comment means, probably nobody else can
either.

I think it might be a copy-paste error from whatever docs I copied the
initial version of the config from.
2024-06-15 20:30:40 -07:00
Ilya Grigoriev
5cbe8d2499 test_generate_cli_reference: Fixup to 16ec185
That old commit made a piece of documentation obsolete, but
I didn't realize it at the time.
2024-06-15 20:30:40 -07:00
Ilya Grigoriev
e0af9a0c2c docs CLI Reference: upgrade clap-markdown to 0.1.4
Fixes important bugs. 🎉
2024-06-15 20:30:40 -07:00
Martin von Zweigbergk
a9953b3fb0 cli: deprecate jj split --siblings in favor of jj split --parallel
This better matches `jj parallelize`.
2024-06-15 22:45:34 +09:00
Manuel Caldeira
72438fc9d2 cli: deprecate -l short alias for --limit in favour of -n
This better matches `git log` and affects `jj log`, `jj op log` and `jj obslog`
2024-06-15 14:14:29 +02:00
Benjamin Tan
7c9f28a96f merge_tools: simplify file conflicts before attempting to resolve 2024-06-15 06:05:06 +08:00
Benjamin Tan
17c8daacef test_resolve_command: accept filename in check_resolve_produces_input_file 2024-06-15 06:05:06 +08:00
Benjamin Tan
9d4ac81c27 print_conflicted_paths: simplify file conflicts before printing 2024-06-15 06:05:06 +08:00
Benjamin Tan
9be33724dc conflicts: materialize simplified file conflicts 2024-06-15 06:05:06 +08:00
Benjamin Tan
f74991c2e1 tests: add tests showing that individual file conflicts are not simplified/deduplicated 2024-06-15 06:05:06 +08:00
Yuya Nishihara
a7bff04af8 revset, templater: implement arity-based alias overloading
Still alias function shadows builtin function (of any arity) by name. This
allows to detect argument error as such, but might be a bit inconvenient if
user wants to overload heads() for example. If needed, maybe we can add some
config/revset syntax to import builtin function to alias namespace.

The functions table is keyed by name, not by (name, arity) pair. That's mainly
because std collections require keys to be Borrow, and a pair of borrowed
values is incompatible with owned pair. Another reason is it makes easy to look
up overloads by name.

Alias overloading could also be achieved by adding default parameters, but that
will complicate the implementation a bit more, and can't prevent shadowing of
0-ary immutable_heads().

Closes #2966
2024-06-14 23:11:29 +09:00
Yuya Nishihara
d38c9e86e8 revset, templater: include parameter names in AliasId
I'm going to add arity-based alias overloading, and we'll need function
(name, arity) pair to identify it in alias expansion stack. The exact parameter
names aren't necessary, but they can be embedded in error messages.
2024-06-14 23:11:29 +09:00
Danny Hooper
986630b270 cli fix: change default from -s @ to -s 'reachable(@, mutable())'
Most of the value of `jj fix` over a shell script is in formatting commits
other than `@`. `@::` often doesn't contain those other commits, so `-s @` is a
bad default.

We could get the same effect from `-s 'mutable() & ::@'`, but `reachable()` is
a bit more explicit and simple to read.

We could also base this on excluding `trunk()`, but that just seems like an
indirection for `mutable()` that might ignore the user's intent if they have
configured part of trunk to be mutable.
2024-06-13 17:08:24 -05:00
Danny Hooper
faf9a9d757 cli fix: add revsets.fix config for default revset to be fixed 2024-06-13 17:08:24 -05:00
Yuya Nishihara
53fa95d73e fileset, templater: in tests, make parse_normalized() unwrap result
It's unlikely that we'll use "normalized" result to compare Err variants.
2024-06-11 20:00:47 +09:00
Martin von Zweigbergk
78cbb513d1 fix: add support for fixing only some paths 2024-06-10 21:51:06 +09:00
Simon Wollwage
3cd1fe4753 Show paths of config files when configurations contain errors
This addresses issue #3317, where as discussed we want to show the paths to
configuration files if they contain errors, to make it easier for the user to
locate them.
2024-06-10 10:14:36 +00:00