Commit Graph

3373 Commits

Author SHA1 Message Date
Benjamin Brittain
730d633c73 op_heads_store: convert OpHeadsStore trait to be async
This is primarily for consistency with the other storage traits.
2025-10-19 05:58:09 +00:00
Benjamin Brittain
3881bd52d7 op_store: convert OpStore trait to be async
This is primarily for consistency with the other storage traits.
2025-10-19 05:46:00 +00:00
Owen Brooks
f88b0d8093 cli: git clone: add --branch option
When cloning with the branch option:
- Only the specified branch will be fetched
- The trunk alias is only set if the specified branch happens to be the default branch
- The clone fails if the branch does not exist in the remote
2025-10-19 05:14:11 +00:00
Owen Brooks
e98e2e58c8 cli: Add RefExpansionError for expand_fetch_refspecs 2025-10-19 05:14:11 +00:00
Yuya Nishihara
ca4d2c2ec4 templater: do not omit parentheses from expression span
This patch changes "primary" to non-silent rule to obtain the span including
parentheses.
2025-10-18 02:45:42 +00:00
Yuya Nishihara
ba48317236 templater: add commit.local/remote_tags() methods for completeness 2025-10-16 15:44:50 +00:00
Yuya Nishihara
0fb99c12cc templater: include remote tags in "tags" output
Since we can now update tags internally, local and remote tags may be out of
sync in non-colocated Git repositories. "tags" template should indicate that.
2025-10-16 15:44:50 +00:00
Yuya Nishihara
75041a2953 cli: add completion helper for existing tag names 2025-10-16 03:03:38 +00:00
Yuya Nishihara
1f30c337c7 cli: add tag delete commands 2025-10-16 03:03:38 +00:00
Yuya Nishihara
4d9cfa65c1 cli: add tag set command
This is a stripped-down version of cmd_bookmark_set(). Since tags shouldn't
usually be rewritten, I've made it fail on updating existing tags by default.
2025-10-16 03:03:38 +00:00
Yuya Nishihara
97b8e916a6 cli: split tag subcommands into modules 2025-10-16 03:03:38 +00:00
Remo Senekowitsch
883d9879d2 cli complete: suggest tracking absent remote bookmarks
This is a follow-up to 937d88ff25,
which made this operation possible in the first place.
2025-10-15 20:20:07 +00:00
Gaëtan Lehmann
4be2aad955 op diff: -G as short version of --no-graph 2025-10-15 17:21:29 +00:00
Gaëtan Lehmann
bb7c3c5b2d op show: -G as short version of --no-graph 2025-10-15 17:21:29 +00:00
Gaëtan Lehmann
bb072635a8 evolog: -G as short version of --no-graph 2025-10-15 17:21:29 +00:00
Gaëtan Lehmann
039863855c op log: -G as short version of --no-graph
To be consistent with `jj log -G`.
2025-10-15 17:21:29 +00:00
Martin von Zweigbergk
beda1381bd working_copy: make potentially slow methods async
There's no pressing need, but we should do this eventually.
2025-10-15 03:27:06 +00:00
Yuya Nishihara
77e2c14d79 cli: git-push: allow pushing new bookmark to tracked remote 2025-10-15 01:52:19 +00:00
Yuya Nishihara
9aaff6afbb cli: bookmark: fix list template to accept absent-tracked remote refs 2025-10-15 01:52:19 +00:00
Yuya Nishihara
937d88ff25 cli: bookmark: allow tracking/untracking absent remote bookmarks
#7072
2025-10-15 01:52:19 +00:00
Yuya Nishihara
82dd14fd85 git: ensure RemoteView is created for remote with no existing refs
This will help "jj bookmark track" know whether absent remote ref can be created
for the specified remote. "jj bookmark" subcommands shouldn't depend on
gix::Repository API.
2025-10-15 01:52:19 +00:00
Yuya Nishihara
429fec1ae3 git: export tag changes
Although we don't have "jj git tag set"/"delete" commands, this fixes weird undo
behavior #6325. The discussion in #6325 is derailed, but there would be another
issue for the "abandon unreachable" behavior.

Fixes #6325
2025-10-15 01:31:16 +00:00
ase
f34dbabd47 config: add support for --when.workspaces 2025-10-14 17:50:07 +00:00
Remo Senekowitsch
9fd1ab78cd git: ensure untracked files are removed from index
Previously untracking a file with `jj file untrack` would not remove the
file from the git index (intent-to-add), making the output of
`jj status` and `git status` inconsistent.
2025-10-14 15:23:50 +00:00
Remo Senekowitsch
50f30c19d8 cli config: delete old migration rules 2025-10-14 06:13:49 +00:00
Martin von Zweigbergk
017d34625b undo: hint about jj op restore when trying to undo merge operation 2025-10-14 05:19:46 +00:00
Remo Senekowitsch
6efaa210df cli: remove deprecated command backout 2025-10-13 16:49:23 +00:00
Remo Senekowitsch
deafaf70cf cli abandon: remove unsupported flag --summary 2025-10-13 15:50:01 +00:00
Martin von Zweigbergk
741a937e3a colors: don't make divergent change ids red if they're also immutable
Divergent changes in immutable commits are fine. We don't want to
alarm the user by coloring them red.

#4451
2025-10-13 15:25:46 +00:00
Martin von Zweigbergk
71661495b8 bisect: don't say that we run the provided command from the workspace root
I don't know if I planned to make the command run from the workspace
root but it doesn't currently do that. I don't think we should change
it either.
2025-10-12 23:50:50 +00:00
Martin von Zweigbergk
829b2ed261 bisect: deprecate --command <cmd> in favor of -- <cmd> <args>...
`jj bisect run --command` splits the argument on spaces, so
e.g. `--command 'cargo test'` will run `cargo` with `test` as
argument. It is hard to pass more complex commands to because we don't
parse e.g. quotes as the shell would (and we wouldn't match the user's
preferred shell even if we did).

This patch deprecates the `--command` argument in favor of positional
arguments, so the user can do things like this:

```
jj bisect run --range ..main -- bash -c 'jj duplicate -r xyz -B @ && cargo test'
```

That will run the tests with the `xyz` change applied.
2025-10-12 23:50:50 +00:00
Martin von Zweigbergk
3a7babe4d9 commit: introduce parent_tree_async(), use in already async callers
I haven't checked if this would make any difference anywhere. It's
nice if we can avoid blocking calls in existing async scopes.
2025-10-12 23:26:29 +00:00
bipul
72bfc1c96f config: add workspace-level configuration support
- Added support for workspace-specific configuration using `jj config` commands.
- Introduced `--workspace` option to `jj config edit`, `jj config set`, and `jj config unset`.
- Workspace configuration file is stored in `.jj/workspace-config.toml` per workspace.
- Simplified workspace path handling logic.
- Updated documentation and test snapshots to reflect new behavior.

This improves flexibility for users working across multiple workspaces.

Co-authored-by: Eidolon <furyhunter600@gmail.com>
Co-authored-by: ase <adam@sandbergericsson.se>
2025-10-12 14:43:12 +00:00
ase
f9afca6bc8 config: remove duplicate os from config-schema.json 2025-10-11 17:01:33 +00:00
Joseph Lou
12d649223f template: Add template-aliases.empty_placeholder
This is similar to `description_placeholder` and provides a simple alias
to globally override the "(empty)" label to something else.
2025-10-11 16:44:28 +00:00
Michael Chirico
2b261a23b3 user-friendliness: hint at lack of access as a possible reason to error 2025-10-10 21:59:16 +00:00
Gaëtan Lehmann
b3ea95ff59 squash: fix -A -B behavior
and add the corresponding test. The children of the new commit were not
properly rebased on their parents.

fix: #7636
2025-10-09 15:53:46 +00:00
Gaëtan Lehmann
39c73e403f metaedit: fix 'squash' in test name 2025-10-09 07:29:04 +00:00
Gaëtan Lehmann
336d9f7997 metaedit: test multiple input revisions
We were previously only testing the edition on a single revision.
2025-10-09 07:29:04 +00:00
Bryce Berger
b9ad82b97a templates: add remote and * to bookmarks in builtin_log_redacted
Remote names are potentially sensitive? Unsure, so better to redact them.

For getting the "*": This could have been done without modifying the
Rust side, with e.g. `stringify(bookmark).ends_with("*")`. However, this
feels brittle.

With adding `.synced()` to the template language, bookmark formatting
_could_ be done entirely in templates now. I don't know if that's
desired, so leaving for a potential future commmit.
2025-10-08 12:48:27 +00:00
Martin von Zweigbergk
8b07de4908 cli: when importing Git HEAD, reset working copy to new child commit
I'm trying to go through the code and make sure that the working copy
is always updated to whatever the working-copy commit in the operation
says. The operation we pass to `LockedWorkingCopy::finish()`, that
is. That wasn't the case after importing the Git HEAD commit. There,
we passed the parent commit instead. It doesn't matter in practice
since the commit is empty but I think it is clearer this way.
2025-10-08 02:18:49 +00:00
Yuya Nishihara
9d11428892 templater: remove unneeded special case from string.split() method
https://docs.rs/regex/latest/regex/struct.Regex.html#method.splitn
2025-10-07 13:43:19 +00:00
Martin von Zweigbergk
42cf192aff cli: add debug object tree -r
This is similar to `jj debug object view --op` in the previous patch.
2025-10-07 13:42:21 +00:00
Martin von Zweigbergk
778c164a4d cli: add debug object view --op
When debugging why a workspace has a particular state, I often run `jj
op log -T id` to find an operation id. Then I pass that to `jj debug
object operation`. Then I get the view id from there and pass it to
`jj debug object view`. To simplify that process, this commit adds a
`jj debug object view --op` which accepts the usual operation
expression (not just a full operation id). Since I often use the
command is for debugging workspaces for other users and/or broken
workspaces, I made it not snapshot.
2025-10-07 13:42:21 +00:00
George Christou
9856b38026 template: add string split method 2025-10-07 10:24:28 +00:00
David Higgs
a9797552d7 metaedit: add --message option, fix: #7634 2025-10-07 00:54:16 +00:00
Steve Fink
14ca2edb7e cli: Make log -G be the short form of --no-graph
Closes #7638
2025-10-06 23:02:16 +00:00
Angel Ezquerra
dc59c66c12 metaedit: do not edit the change if the --author-timestamp matches the current timestamp (fixes #7602) 2025-10-06 07:19:45 +00:00
Anton Älgmyr
41837fe930 bisect: Make bisect able to search for first good/bad revision in the range 2025-10-01 22:24:32 +00:00
Yuya Nishihara
3d4d372b6c view: rename tags() to local_tags(), make it return iterator
This matches the "bookmark" API.
2025-09-30 13:51:40 +00:00