Yuya Nishihara
82b0e88a21
config: add workaround for config path expression parsing
...
As of config 0.13.4, the path Expression type is private, and there's no escape
syntax. This patch adds a fallback to nested HashMap<String, Value> lookup.
https://github.com/mehcode/config-rs/blob/v0.13.4/src/path/mod.rs#L10
https://github.com/mehcode/config-rs/blob/v0.13.4/src/path/parser.rs
Fixes #1723
2024-05-23 10:18:17 +09:00
Yuya Nishihara
a127fd9c5d
config: introduce newtype for dotted config name path
...
"config list NAME" argument is now parsed as TOML key, but it's still broken
since config.get() expects a query expression in different syntax.
The other config commands will be migrated later.
2024-05-23 10:18:17 +09:00
Yuya Nishihara
f65ba88109
tree: take sub_tree_recursive() argument as &RepoPath
...
Since RepoPath is now a slice type, it can be constructed without cloning the
backing buffer. Let's simply use it instead of the iterator type.
2024-05-23 10:14:48 +09:00
Martin von Zweigbergk
cd5e82d0d3
tree: make sub_tree_recursive()
public
...
These functions (in `Tree` and `MergedTree`) are safe to use. We have
a duplicate of these functions at Google, which would be nice to
avoid.
2024-05-22 11:21:18 -07:00
Martin von Zweigbergk
50dd78eb8f
cargo: upgrade gix to version 0.63
2024-05-22 11:20:57 -07:00
Martin von Zweigbergk
aecee1d6cc
tree: make MergedTreeVal::to_merge()
public
...
I don't think there's any harm in this function being public. We have
a duplicate of it at Google.
2024-05-22 11:20:43 -07:00
Martin von Zweigbergk
ff4ea73ac0
cli: move a few functions in commands/config.rs
to public places
...
Turns out we use some of the functions in `commands/config.rs` at
Google. (We use them for writing name and email if the user hasn't set
them.)
2024-05-22 07:47:57 -07:00
Martin von Zweigbergk
b227dde787
conflicts: indicate executable conflict in git-format diff
2024-05-22 06:46:58 -07:00
Martin von Zweigbergk
07bb1d81b7
tree_builder: propagate errors from write_tree()
2024-05-22 06:46:38 -07:00
Martin von Zweigbergk
1970ddef15
tree: propagate errors from sub_tree()
/path_value()
2024-05-22 06:46:38 -07:00
Martin von Zweigbergk
facfb71f7b
test_merged_tree: reduce duplication and wrapping with helper lambdas
...
I'm about to make `[Merged]Tree::path_value()` return a `Result`. This
will help even more then.
2024-05-22 06:46:38 -07:00
Yuya Nishihara
2143cc3686
fileset: consolidate signature of invalid arguments error constructors
...
For the same reason as the templater changes. These FunctionCallNode types will
be extracted as utility type.
2024-05-22 10:18:05 +09:00
Yuya Nishihara
7a230395c2
fileset: implement expect_no_arguments() as method
2024-05-22 10:18:05 +09:00
Yuya Nishihara
c9b088c795
templater: let caller specify function name and span of invalid arguments error
...
This will help extract interface of the error constructor without depending on
T: ExpressionKind type.
2024-05-22 10:18:05 +09:00
Yuya Nishihara
e5fca8fadd
templater: add helper that maps FunctionCallNode to error
2024-05-22 10:18:05 +09:00
Yuya Nishihara
da005444e1
templater: forward expect_no_arguments() to expect_exact_arguments()
2024-05-22 10:18:05 +09:00
Yuya Nishihara
04efac3a51
templater: implement expect_*_arguments() as methods
...
I'm thinking of moving them to dsl_util, but we'll probably want to avoid
importing dsl_util at call sites.
2024-05-22 10:18:05 +09:00
Yuya Nishihara
06f488a8f6
cli: config: update default template for multi-line overridden values
2024-05-22 10:17:37 +09:00
Yuya Nishihara
ef8038f60f
cli: config: leverage toml_edit::Value to serialize values
...
I use ValueKind::Ty(ref v) here because (*v).into() looked rather noisy.
Fixes #3374
2024-05-22 10:17:37 +09:00
Yuya Nishihara
d38c366a98
cli: config: use str.parse() to remove "use FromStr"
2024-05-22 10:17:37 +09:00
Yuya Nishihara
7b72e04206
cli: config: move helper functions to commands.config module
...
There are no external callers, so let's make them private.
2024-05-22 10:17:37 +09:00
Matt Stark
fa6f5e3880
Add the revsets mutable
and immutable
.
...
I add them as aliases, since a user may instead choose to define `immutable_heads()`, for example, as `heads(immutable())`, and the define `immutable()` instead.
2024-05-22 09:19:46 +10:00
Ilya Grigoriev
77cf968316
docs: replace redirects with copies of files
...
This means that <https://martinvonz.github.io/jj/latest/index.html > will
not longer redirect to
<https://martinvonz.github.io/jj/v0.18.0/index.html > (or similar) after
the next release, as requested by @jyn514 on Discord. Instead, it will
be a copy.
Originally, the plan was to use mike's symlink functionality and make
`latest` a symlink. See a comment inline for how that didn't work; we
could do that after changing how GitHub Pages are built.
Before the next `jj` release, and after this PR is merged, you can play
with this by going to <https://martinvonz.github.io/jj/main/ > which is
an alias for <https://martinvonz.github.io/jj/prerelease/ >.
Because of previous commits in this PR, the latest version will be
marked in the version selector as "latest", so hopefully this won't
confuse users.
Due to the parent commit, the "latest" URL will be considered canonical.
2024-05-21 16:19:04 -07:00
Ilya Grigoriev
864869abd5
docs: set canonical_version to latest
...
Currently, https://www.google.com/search?q=jj+revsets has problematic
results, one of the top links for me is
https://martinvonz.github.io/jj/v0.14.0/github/ (we are currently on
v0.17.1).
I hope this will help them all point to `latest` instead.
2024-05-21 16:19:04 -07:00
Ilya Grigoriev
ff810c6097
docs: show version alias in version selector
...
See https://github.com/martinvonz/jj/pull/3723 for a screenshot.
This will make it clearer to the users that the "latest" and "v0.??.?"
are the same even if the former does not redirect to the latter (but has
identical contents).
MkDocs material lists the *first* alias for each version, so I also
added a "nightly" alias for "prerelease". Otherwise, users would see the
"main" alias, and might get confused whether they should use "latest" or
"main" docs if they don't realize it's named after the "main" branch.
(Upon testing, it still shows "main" for now, but it should be possible
to fix this after this PR is merged by reordering the aliases directly
in `versions.json` on the gh-pages branch)
2024-05-21 16:19:04 -07:00
Ilya Grigoriev
54e04e4ac3
update mkdocs-material & poetry update
...
The new version supports showing labels in version selector.
2024-05-21 16:19:04 -07:00
Remo Senekowitsch
2a320b324c
github: add linux-aarch64 build
2024-05-21 13:49:06 -05:00
dploch
d31edd4ac5
changelog: fix typo and move 'reachable' announcement to correct section
2024-05-21 10:51:48 -05:00
dploch
a49da4ad01
revset: implement a 'reachable(src, domain)' expression
...
This revset correctly implements "reachability" from a set of source commits following both parent and child edges as far as they can go within a domain set. This type of 'bfs' query is currently impossible to express with existing revset functions.
2024-05-21 10:52:31 -04:00
dploch
5125eab505
union_find: implement a library for the Union-Find algorithm
2024-05-21 10:52:31 -04:00
Thomas Castiglione
13c8f32ceb
local_working_copy: fix some clippy lints that only show up on Windows
2024-05-21 14:37:17 +08:00
Thomas Castiglione
59d3a2c866
local_working_copy: when all sides of a conflict are executable, materialise the conflicted file as executable
...
Fixes #3579 and adds a testcase for an executable conflict treevalue.
2024-05-21 14:37:17 +08:00
dependabot[bot]
5041649cbb
---
...
updated-dependencies:
- dependency-name: requests
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 01:26:34 -05:00
Ilya Grigoriev
84007075d9
jj config list
: escape keys
...
Fixes #1322 . There may be more places where keys need escaping, I'm not
completely sure.
2024-05-20 22:39:56 -07:00
Ilya Grigoriev
1f7c4ec60a
conflicts: label closing delimeter with conflict number
...
This follows up on https://github.com/martinvonz/jj/pull/3459 and adds a
label to the closing delimeter of each conflict, e.g. "Conflict 1 of 3
ends".
I didn't initially put any label at the ending delimeter since the
starting delimeter is already marked with "Conflict 1 of 3". However,
I'm now realizing that when I resolve conflicts, I usually go from top
to bottom. The first thing I do is delete the starting conflict
delimeter. It is when I get to the *end* of the conflict that I wonder
whether there are any more conflicts left in the file.
2024-05-20 18:36:51 -07:00
dependabot[bot]
7812beb087
github: bump github/codeql-action in the github-dependencies group
...
Bumps the github-dependencies group with 1 update: [github/codeql-action](https://github.com/github/codeql-action ).
Updates `github/codeql-action` from 2.13.4 to 3.25.6
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](cdcdbb5797...9fdb3e4972
)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 16:10:46 +00:00
dependabot[bot]
990c48a9bc
cargo: bump the cargo-dependencies group with 7 updates
...
Bumps the cargo-dependencies group with 7 updates:
| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow ) | `1.0.83` | `1.0.86` |
| [libc](https://github.com/rust-lang/libc ) | `0.2.153` | `0.2.155` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2 ) | `1.0.82` | `1.0.83` |
| [prost](https://github.com/tokio-rs/prost ) | `0.12.4` | `0.12.6` |
| [prost-build](https://github.com/tokio-rs/prost ) | `0.12.4` | `0.12.6` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.64` | `2.0.65` |
| [thiserror](https://github.com/dtolnay/thiserror ) | `1.0.60` | `1.0.61` |
Updates `anyhow` from 1.0.83 to 1.0.86
- [Release notes](https://github.com/dtolnay/anyhow/releases )
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.83...1.0.86 )
Updates `libc` from 0.2.153 to 0.2.155
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.153...0.2.155 )
Updates `proc-macro2` from 1.0.82 to 1.0.83
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.82...1.0.83 )
Updates `prost` from 0.12.4 to 0.12.6
- [Release notes](https://github.com/tokio-rs/prost/releases )
- [Commits](https://github.com/tokio-rs/prost/compare/v0.12.4...v0.12.6 )
Updates `prost-build` from 0.12.4 to 0.12.6
- [Release notes](https://github.com/tokio-rs/prost/releases )
- [Commits](https://github.com/tokio-rs/prost/compare/v0.12.4...v0.12.6 )
Updates `syn` from 2.0.64 to 2.0.65
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.64...2.0.65 )
Updates `thiserror` from 1.0.60 to 1.0.61
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.60...1.0.61 )
---
updated-dependencies:
- dependency-name: anyhow
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: libc
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: proc-macro2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: prost
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: prost-build
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-dependencies
- dependency-name: syn
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>
2024-05-20 15:54:47 +00:00
Remo Senekowitsch
c9375bf76f
docs: fix converting a repo into a co-located one
...
`jj st` doesn't add the file `.git/refs/heads/main` so the git repo is left
in an invalid state. `jj new @-` puts the git repo in a valid state.
2024-05-20 21:39:27 +09:00
Yuya Nishihara
c04fb7d33a
templater: migrate to generic dsl_util::AliasesMap type
2024-05-20 10:32:18 +09:00
Yuya Nishihara
2cbc4f9996
revset: extract generic dsl_util::AliasesMap<P> type
...
As I'm going to extract generic alias substitution helpers, there should be
a common map type.
2024-05-20 10:32:18 +09:00
Yuya Nishihara
6916fae853
revset, templater: extract trait that parses alias declaration
...
Revset/TempalteAliasesMap will be extracted as a generic map type over
P: AliasDeclarationParser.
2024-05-20 10:32:18 +09:00
Yuya Nishihara
467d73f1e6
revset: make .get_symbol/function() compatible with TemplateAliasesMap
...
These map types will be combined.
2024-05-20 10:32:18 +09:00
Yuya Nishihara
3db1f9fe5d
revset: extract aliases_map.function_names()
...
TemplateAliasesMap has a similar function for symbols, and I'm going to extract
a common aliases map type.
2024-05-20 10:32:18 +09:00
Yuya Nishihara
60c3f623ef
tests: use get_branch_output() helper thoroughly in test_git_*
2024-05-19 22:45:32 +09:00
Waleed Khan
6eefad9b67
docs: Add Log
header
...
There are six related settings that would be good to group in the table of contents.
2024-05-18 16:39:28 -07:00
Philip Metzger
bbb9ca10cd
lib: Add RevsetExpression::is_empty()
, which filters out empty commits.
...
This is a useful helper for programmatic revsets. Users were also migrated.
2024-05-19 00:20:05 +02:00
Yuya Nishihara
6d211c589c
templater: consolidate node.span handling in expand_node()
...
I'll probably rewrite expand_aliases() in visitor-like interface, and tree
traversal logic will be implemented on ExpressionKind. That's why I made
expand_node() destructure ExpressionNode first.
2024-05-18 09:53:52 +09:00
Yuya Nishihara
6b9e5f7cd7
templater: attach alias traces to function parameter
...
This consolidates the type of substitution results. Before, symbol substitution
can return inner ExpressionKind internally, but function-parameter substitution
couldn't.
2024-05-18 09:53:52 +09:00
Yuya Nishihara
47d372b71e
templater: attach alias traces to type errors
...
This should avoid regression caused by upcoming changes. An alias function
parameter will be wrapped with AliasExpanded, and type errors in it should
be reported with its alias expansion stack.
2024-05-18 09:53:52 +09:00
Yuya Nishihara
3e51e93265
fileset: box FunctionCallNode to make enum smaller
...
For the same reason as the previous commit.
2024-05-18 09:53:52 +09:00