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

6132 commits

Author SHA1 Message Date
Ilya Grigoriev
4907a384b9 docs: update dependency versions, poetry update 2024-05-14 13:14:27 -07:00
Yuya Nishihara
b9039c3c2d cli: remove unneeded lifetime bound from check_rewritable() 2024-05-14 19:45:52 +09:00
Théo Daron
b1fca954cf fix: changelog entry for PR #3600 2024-05-14 12:14:46 +02:00
Théo Daron
823041c795 cli: create new wc_commit when wc_commit become immuable 2024-05-14 08:53:11 +02:00
Yuya Nishihara
b0d17acb30 merge_tools: leverage Display for printing exit status
This should handle signal exits better. format_tool_aborted() is inlined
because it is more or less a string literal now.
2024-05-14 10:24:28 +09:00
Yuya Nishihara
c17a75624e signing: remove redundant "exit status" from SSH backend error
Follows up 550f44b7c1 "gpg: drop redundant "exit status" from error message."
2024-05-14 10:24:28 +09:00
Yuya Nishihara
a61f91b8cf templater: propagate error from commit.parents() method 2024-05-14 10:24:11 +09:00
Yuya Nishihara
1b6589a463 cli: add helper functions that set up diff renderer based on command args
Just for convenience. Even though WorkspaceCommandHelper is getting bloated,
I think it's okay to add thin wrapper functions there.
2024-05-14 09:36:13 +09:00
Yuya Nishihara
4d9c84a17e diff_util: remove WorkspaceCommandHelper dependency from show functions
I've added a wrapper struct in order to get around too many arguments warning.
It captures &dyn Repo as CommitTemplateLanguage would do. OTOH, &Ui is passed
by argument because the caller might need &mut Ui after the renderer object was
configured.
2024-05-14 09:36:13 +09:00
Yuya Nishihara
7341bff2f4 diff_util: remove WorkspaceCommandHelper dependency from inner show functions
I've added a struct similar to RevsetWorkspaceContext. It can be a closure,
but we'll need to duplicate format_file_path() function anyway if we add
commit.diff() template.
2024-05-14 09:36:13 +09:00
Yuya Nishihara
b6d95c3504 cli: use high-level show_diff() function in cmd_status()
As I'm going to remove &WorkspaceCommandHelper from these functions, it will
be a bit more verbose to call low-level show_*() functions.
2024-05-14 09:36:13 +09:00
Yuya Nishihara
13f10f6957 diff_util: pass repo in to inner show functions by argument
I'm going to remove &WorkspaceCommandHelper dependency. This is the easy part.
2024-05-14 09:36:13 +09:00
Yuya Nishihara
6e7c9f15fd diff_util: pass term_width() in to show_diff_stat() by argument
This patch removes ui dependency from show_diff_stat().
2024-05-14 09:36:13 +09:00
Yuya Nishihara
f614c96383 diff_util: remove CommandError dependency from show functions
Suppose we add commit.diff() template method, some of these show_*() functions
will be called from there. CommandError shouldn't appear in that layer.
2024-05-14 09:36:13 +09:00
dependabot[bot]
b1fc2cf7e9 cargo: bump syn from 2.0.61 to 2.0.63 in the cargo-dependencies group
Bumps the cargo-dependencies group with 1 update: [syn](https://github.com/dtolnay/syn).


Updates `syn` from 2.0.61 to 2.0.63
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.61...2.0.63)

---
updated-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-05-13 12:34:23 -05:00
Ilya Grigoriev
02b72e542d docs: try upgrading mkdocs-material again, upgrade MkDocs
https://github.com/squidfunk/mkdocs-material/issues/7160 is supposed to
be fixed now. I will double-check that the version switcher still works
after this commit. This only affects the version switcher from
"prerelease" to other versions.. The functionality is a bit brittle, so
it's hard to test locally before merging this.

We do want to upgrade, since this allows us (and seems to also require
us) to upgrade to MkDocs 1.6, which has a nice feature of disallowing
links to broken document section (beyond just checking for links to
non-existent files).

I carefully avoided unnecessary upgrades in this commit, but we
should also run `poetry update` shortly, once we check this
works properly. Also, the feature of MkDocs 1.6 I mentioned needs
enabling.

Finally, I plan to change version specifiers from Poetry's `^5.6.22`
syntax to more plain inequalities, since I keep forgetting what the
former syntax means. I started with this commit.

(I was surprised MkDocs was allowed to be upgraded to `1.6` with the
`^1.5.2` spec.  I now suspect that what I previously thought it should
mean is expressed as `~1.5.2`, but inequalities are clearer).
2024-05-13 09:14:33 -07:00
Martin von Zweigbergk
550f44b7c1 gpg: drop redundant "exit status" from error message
Apparently we currently get things like "GPG failed with exit status
exit status: 2".
2024-05-13 08:30:00 -07:00
Martin von Zweigbergk
ee9d3271c1 cleanup: propagate errors from Commit::predecessors() 2024-05-13 07:39:14 -07:00
Martin von Zweigbergk
0a758e7024 cleanup: propagate errors from Commit::parents()
The function now returns an iterator over `Result`s, matching
`Operation::parents()`.

I updated callers to also propagate the error where it was trivial.
2024-05-13 07:39:14 -07:00
Martin von Zweigbergk
677081ef71 rebase: avoid an unnecessary lookup of parent commits 2024-05-13 07:39:14 -07:00
Martin von Zweigbergk
256988de65 repo: add a workaround for merging repo views with Google's index
We do a 3-way merge of repo views in a few different
scenarios. Perhaps the most obvious one is when merging concurrent
operations. Another case is when undoing an operation.

One step of the 3-way repo view merge is to find which added commits
are rewrites of which removed commits (by comparing change IDs). With
the high commit rate in the Google repo (combined with storing the
commits on a server), this step can get extremely slow.

This patch adds a hack to disable the slow step when using a
non-standard `Index` implementation. The Google index is the only
non-standard implementation I'm aware of, so I don't think this will
affect anyone else. The patch is also small enough that I don't think
it will cause much maintenance overhead for the project.
2024-05-12 08:59:44 -07:00
Yuya Nishihara
728e9e0772 cli: reuse ConfigLevelArgs for "config list --user/--repo"
This is a bit tricky, but we can reconfigure group attributes by using
mut_group().

https://docs.rs/clap/latest/clap/struct.Command.html#method.mut_group
2024-05-12 23:15:58 +09:00
Yuya Nishihara
717b42245c cli: rename ConfigArgs to ConfigLevelArgs 2024-05-12 23:15:58 +09:00
Yuya Nishihara
95593598d5 cli: use command(flatten) instead of deprecated clap(..) 2024-05-12 23:15:58 +09:00
Yuya Nishihara
db75e19751 cli: insert tracing at editor/pager invocation
This should help debug Windows mess.
2024-05-12 23:06:14 +09:00
Yuya Nishihara
e3b3b5586f ui: add per-type FormatterFactory constructors, inline selection
This should be better than passing (bool, bool, bool) arguments.
2024-05-12 09:21:18 +09:00
Yuya Nishihara
46246a7734 ui: inline debug_color() and use_color() 2024-05-12 09:21:18 +09:00
Yuya Nishihara
46226a4c44 ui: forward .color() to FormatterFactory
This helps eliminate use_color() function.
2024-05-12 09:21:18 +09:00
Yuya Nishihara
0423e3e1ee ui: add helper function that sets up FormatterFactory
I'm going to split FormatterFactory::prepare() which takes 3 bool arguments,
and prepare() will be inlined there.
2024-05-12 09:21:18 +09:00
tinger
d0a29a831d cli: add ui.color = "debug"
When using `ui.color = "debug"`, changes in the output style
additionally include delimiters << and >>, as well as all active labels
at this point separated by ::. The output is otherwise unformatted and
the delimiters and labels inherit the style of the content they apply
to.
2024-05-11 10:16:09 +02:00
Yuya Nishihara
de4ea5bc5a revset: move basic argument helpers to separate module
parse_function_argument_to_file/string_pattern() functions aren't moved.
They are more like functions that transform parsed tree to intermediate
representation.
2024-05-11 16:50:14 +09:00
Yuya Nishihara
f82c946ebe revset: move parsing functions to separate module
These functions will be reimplemented, and they will return a parsed tree
instead of RevsetExpression tree.
2024-05-11 16:50:14 +09:00
Yuya Nishihara
e6aa8906f7 revset: move alias types to separate module
Alias expansion is purely substitution of parsed tree, which should belong to
the first parsing stage.
2024-05-11 16:50:14 +09:00
Yuya Nishihara
68db9c142c revset: extract parser types to separate module
I'm planning to rewrite the parser in a similar way to fileset/template parsing,
and the revset_parser module will host functions and types for the first stage.
I haven't started the rewrite, but it seems good to split the revset module
even if we reject the idea.
2024-05-11 16:50:14 +09:00
Yuya Nishihara
cfc18b0432 revset: make RevsetParser type private
It's unlikely that client codes and integration tests have to use the pest
API directly.
2024-05-11 16:50:14 +09:00
Yuya Nishihara
d6613304c9 cli: print deleted branch hints at end of "branch list" output
These hints shouldn't be interleaved in the template output. The new output
might look a little bit worse, but I don't think it's unacceptably bad.
2024-05-11 09:43:53 +09:00
Yuya Nishihara
2f3ac4e4d7 tests: snapshot both stdout and stderr in "branch list" tests 2024-05-11 09:43:53 +09:00
Yuya Nishihara
60825c4591 tests: use get_branch_output() at a few more places
Not all "branch list --all-remotes" callers are replaced because I'm going to
make get_branch_output() suppress hints by default, and there should be tests
for the hints.
2024-05-11 09:43:53 +09:00
Alexander Potashev
07559f24ec Refuse to split an empty commit with jj split.
Rationale: The user may be confused by the empty diff in the diff editor
tool if they accidentally run `jj split` on a wrong (empty) commit.
2024-05-10 19:37:28 +02:00
dependabot[bot]
f3519e4c2e github: bump the github-dependencies group with 3 updates
Bumps the github-dependencies group with 3 updates: [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action), [DeterminateSystems/magic-nix-cache-action](https://github.com/determinatesystems/magic-nix-cache-action) and [ossf/scorecard-action](https://github.com/ossf/scorecard-action).


Updates `DeterminateSystems/nix-installer-action` from 10 to 11
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](de22e16c47...8cdf194da9)

Updates `DeterminateSystems/magic-nix-cache-action` from 4 to 6
- [Release notes](https://github.com/determinatesystems/magic-nix-cache-action/releases)
- [Commits](fc6aaceb40...87e8236f46)

Updates `ossf/scorecard-action` from 2.3.1 to 2.3.3
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](0864cf1902...dc50aa9510)

---
updated-dependencies:
- dependency-name: DeterminateSystems/nix-installer-action
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-dependencies
- dependency-name: DeterminateSystems/magic-nix-cache-action
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-dependencies
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-10 10:59:40 -05:00
dploch
3a0929b876 index_store: add more scope to write_index()
This is more consistent with the other method and it makes some extension operations easier, by giving access to the OpStore and other relevant context for custom index extensions.
2024-05-10 09:22:09 -04:00
Yuya Nishihara
3307696ba8 cli: parse out redundant "all:" revset modifier in arguments and templates
This also means "all:" is allowed in default revsets (such as "revsets.log"),
but that seems okay. In revset aliases, "all:" isn't allowed because aliases
may be expanded to sub-expression position.

Closes #3654
2024-05-10 15:28:18 +09:00
Yuya Nishihara
ba73accac6 cli: use command helper to check if path argument is parsable as revset
There should be no reason to use low-level API.
2024-05-10 15:28:18 +09:00
Yuya Nishihara
12b873e1ef cli: port "branch list" to template
Perhaps, this can be used to generate parsable branches list.

The hint for deleted branches isn't migrated to the template. I'm thinking of
moving it out of the loop and printed once at the end. If we want to generate
a hint in template, we'll probably need local_ref.tracking_remote_refs(), etc.
that return a list of RefNames.
2024-05-10 08:36:38 +09:00
Yuya Nishihara
af9f9ba1e4 cli: filter out synced remote branches early
Perhaps, this make it a bit clearer when "deleted" local branches should be
displayed. In practice, this change is noop since remote_ref.target should
never be absent.
2024-05-10 08:36:38 +09:00
Yuya Nishihara
8e4f75552d templater: add tracking methods to remote RefName
More tests will be added later as "branch list" templates.

In "log" template, we might want to see the number of "local" commits ahead
of any tracked remotes. It can be implemented later in a similar way (or as a
nested remote_refs list.)
2024-05-10 08:36:38 +09:00
Yuya Nishihara
ccabb11890 templater: wrap RefName with Rc to copy OnceCell around
Because template is declarative language, and is evaluated as a tree, there
will be multiple copies of the same RefName object. This patch allows us to
cache ahead/behind counts which will be lazily calculated.
2024-05-10 08:36:38 +09:00
Yuya Nishihara
cb0964b1d0 templater: extract remote-only RefName constructor as well
I'm going to make these constructors return Rc<RefName>, and it seems better
to consolidate Rc wrapping functions.
2024-05-10 08:36:38 +09:00
Yuya Nishihara
e27421d2bd templater: extract trackable RefName constructors
They'll be called from cmd_branch_list().
2024-05-10 08:36:38 +09:00
Yuya Nishihara
9a5b001d58 templater: add SizeHint type to represent revset.count_estimate() value
We'll probably add binary comparison operators at some point, but this patch
also adds size_hint.zero() method. Otherwise, we'll have to write
"if(x.upper() && x.upper() == 0, ..)" to deal with None.

The resulting "branch list" template will look like:
```
separate(", ",
  if(!ref.tracking_ahead_count().zero(),
    if(ref.tracking_ahead_count().exact(),
      "ahead by " ++ ref.tracking_ahead_count().exact() ++ " commits",
      "ahead by at least " ++ ref.tracking_ahead_count().lower() ++ " commits")),
  if(!ref.tracking_behind_count().zero(),
    if(ref.tracking_behind_count().exact(),
      "behind by " ++ ref.tracking_behind_count().exact() ++ " commits",
      "behind by at least " ++ ref.tracking_behind_count().lower() ++ " commits")),
)
```
2024-05-09 08:51:34 +09:00