2559 Commits

Author SHA1 Message Date
Yuya Nishihara
00c2d15f29 cli: do not print commit summary for previously-conflicted commits
I usually don't read these messages carefully, and the red "(conflict)" label
looked scary. Suppose we don't have to take further action on resolved commits,
I don't think we need to print commit summary for each resolved commit.
2025-03-23 01:31:22 +00:00
Yuya Nishihara
e52ddda98f conflicts: pack MaterializedTreeValue::File fields, use read_all() helper
This pattern is common.
2025-03-23 01:31:15 +00:00
Yuya Nishihara
9a615b5b62 config: relax bare string rule to accept middle apostrophes, etc.
Closes #5748
2025-03-22 09:00:44 +00:00
Caleb White
caf172f651 templates: create builtin_draft_commit_description template
This moves the default template to `builtin_draft_commit_description` and
points `draft_commit_description` to it. This makes it easier to override
the template while still being able to refer to the default.
2025-03-22 02:06:10 +00:00
Yuya Nishihara
ca616fade2 tests: port test_git_import_export.rs to TestWorkDir API 2025-03-21 01:19:20 +00:00
Yuya Nishihara
569a405cea tests: port test_git_fetch.rs to TestWorkDir API 2025-03-21 01:19:20 +00:00
Yuya Nishihara
64f8661f0f tests: port test_git_colocated.rs to TestWorkDir API 2025-03-21 01:19:20 +00:00
Yuya Nishihara
a36bf18a57 tests: port test_git_clone.rs to TestWorkDir API
In test_git_clone.rs, it's common to execute "jj git clone" or do file operation
at the root directory. This patch adds root_dir: &TestWorkDir references for
that reason. We might want to somehow merge root_dir and test_env later.
2025-03-21 01:19:20 +00:00
Caleb White
680c41c30f signing: add gpgsm backend
The adds support for PKCS#12 certificates through the `gpgsm` backend.

Closes #5856
2025-03-20 17:01:39 +00:00
Yuya Nishihara
9f867b6fac tests: port test_fix_command.rs to TestWorkDir API 2025-03-19 14:52:52 +00:00
Yuya Nishihara
602799afae tests: inline init_with_fake_formatter() to callers 2025-03-19 14:52:52 +00:00
Yuya Nishihara
5647113cbd tests: extract helper that configures fake "fix" formatter 2025-03-19 14:52:52 +00:00
Yuya Nishihara
1769b14995 tests: port test_file_track_untrack_commands.rs to TestWorkDir API 2025-03-19 14:52:52 +00:00
Yuya Nishihara
6f31ba9042 cli: git-push: use RemoteRefSymbol to format and pass name@remote around
This ensures that remote symbols are printed with quoting as needed. Local
bookmark names aren't quoted, which will be fixed separately by introducing
RefName(str) newtype.
2025-03-19 14:28:56 +00:00
Yuya Nishihara
8ae605703e cli: git-push: rename bookmark name/remote variables, bind reference
I'm going to replace (name, remote) pair with RemoteRefSymbol. The underlying
name types will also be changed to RefName/RemoteName newtypes.
2025-03-19 14:28:56 +00:00
Yuya Nishihara
f37f927bc2 cli: abandon: remove --summary flag, just print elided list
AFAICT, this option was needed when we're going to abandon hundreds of commits.
However, I typically notice that I had to use --summary to suppress the output
after the fact. Since the list is now truncated up to 10 commits, I don't think
the --summary flag is useful anymore. This patch also removes the special case
for 1 item, which existed primarily for overriding --summary.
2025-03-19 05:32:26 +00:00
Yuya Nishihara
976f3585e1 cli: truncate list of abandoned/created/updated commits
The choice of the upper limit is arbitrary. We use 5 in "multiple revisions"
error, but I feel 5 would be too small for "jj absorb", where the stack of
mutable commits may be ~10, but wouldn't likely be ~100s.
2025-03-19 05:32:26 +00:00
Yuya Nishihara
f07203cb3b cli: extract helper that prints list of indented commit summary 2025-03-19 05:32:26 +00:00
Yuya Nishihara
3b083f914c tests: port test_file_show_command.rs to TestWorkDir API 2025-03-19 01:47:00 +00:00
Yuya Nishihara
9e04e60594 tests: port test_file_chmod_command.rs to TestWorkDir API 2025-03-19 01:47:00 +00:00
Yuya Nishihara
ae5e717d4e tests: port test_file_annotate_command.rs to TestWorkDir API 2025-03-19 01:47:00 +00:00
Yuya Nishihara
bf53953c46 tests: port test_evolog_command.rs to TestWorkDir API 2025-03-19 01:47:00 +00:00
Yuya Nishihara
4f192d0162 tests: port test_edit_command.rs to TestWorkDir API 2025-03-19 01:47:00 +00:00
Yuya Nishihara
082602f2da tests: port test_duplicate_command.rs to TestWorkDir API 2025-03-19 01:47:00 +00:00
Yuya Nishihara
322c9951cf ui: do not pass empty choice input to parse function
Since prompt_choice_with() is now public, it should handle the default value
more consistently. parse() shouldn't be a function that can potentially feed a
default value.

We no longer print "unrecognized response" on empty input. I think this is
correct because an empty input is noop.
2025-03-18 15:43:43 +00:00
Yuya Nishihara
c2c2196b14 cli: split name/email not configured message to warning and hint
We usually print a short error message plus detailed hints.
2025-03-18 14:35:54 +00:00
Yuya Nishihara
b9e88be191 cli: extract common formatting function for updated working-copy stats
It's not important to print the parent commits on update-stale, but there should
be no reason to deviate the output formatting.
2025-03-18 14:35:54 +00:00
Yuya Nishihara
ccf927e1d8 cli: pass CheckoutStats to "print" function by reference 2025-03-18 14:35:54 +00:00
Yuya Nishihara
1a4d8dbbf4 ui: reimplement prompt_yes_no() by using prompt_choice_with()
It was odd that uppercase "Y"/"N" wasn't accepted.
2025-03-18 11:17:34 +00:00
Yuya Nishihara
083292d198 ui: extract prompt_choice_with(..callback)
I think "jj next/prev" prompt can also support selection by change ID prefix.
Maybe we can also add ui.prompt_choice_range(prompt, range, default) if that's
common?
2025-03-18 11:17:34 +00:00
Ilya Grigoriev
2a4b2dedf0 simple backend: document the lack of fetching and pushing
This is barely worth doing, but since I did it once...

I feel that some people might treat the simple backend as an easter egg, and
this will help them know what to expect.
2025-03-18 06:38:18 +00:00
Ilya Grigoriev
659325f9c3 cli git fetch: stop tracing the arguments of the outer function
The important arguments are traced in the inner function.

Previously:

```
2025-03-18T05:01:44.714692Z DEBUG run_command:cmd_git_fetch{args=GitFetchArgs { branch: [Exact("main"), Exact("master"), Glob(GlobPattern("gh-readonly-queue*")), Glob(GlobPattern("ig/*"))], remotes: [Exact("upstream")], all_remotes: false }}:fetch{remote_name="upstream" branch_names=[Exact("main"), Exact("master"), Glob(GlobPattern("gh-readonly-queue*")), Glob(GlobPattern("ig/*"))] depth=None}: jj_lib::git_subprocess: spawning a git subprocess cmd=LC_ALL="C" "git" "--git-dir" "/Users/ilyagr/dev/jj/.git" "branch" "--remotes" "--delete" "--" "upstream/master"
```

Now:

```
2025-03-18T05:06:29.573444Z DEBUG run_command:cmd_git_fetch:fetch{remote_name="upstream" branch_names=[Exact("main"), Exact("master"), Glob(GlobPattern("gh-readonly-queue*")), Glob(GlobPattern("ig/*"))] depth=None}: jj_lib::git_subprocess: spawning a git subprocess cmd=LC_ALL="C" "git" "--git-dir" "/Users/ilyagr/dev/jj/.git" "branch" "--remotes" "--delete" "--" "upstream/master"
```
2025-03-18 06:02:05 +00:00
Ilya Grigoriev
341ddc9148 ci: make sure tests fail in CI if gpg or taplo binaries are not found
Fixes #5696
2025-03-18 02:18:08 +00:00
Yuya Nishihara
b000c94a7a tests: add work_dir.dir(path), make create_dir*() return helper for sub dir
I found this pattern is common.
2025-03-18 01:25:08 +00:00
Yuya Nishihara
c7811bb956 tests: move strip_last_line() to command_output module
The primary caller of this function is CommandOutputString. We can reexport it
if needed.
2025-03-18 01:25:08 +00:00
Yuya Nishihara
7ab62ab865 tests: extract CommandOutput types to sub module
These types don't depend on TestEnvironment.
2025-03-18 01:25:08 +00:00
Philip Metzger
f8ab8a0e72 lib: rename the LocalBackend to SimpleBackend
This makes it clear to source code readers, that it isn't the _native backend_ the project
talks about in the Roadmap.
2025-03-17 17:17:11 +00:00
Benjamin Tan
2bf5d6aa8f cli: deprecate backout command 2025-03-17 15:03:29 +00:00
Benjamin Tan
8a816b2622 cli: add revert command
This adds a revert command which is similar to backout, but adds the
`--destination`, `--insert-after`, and `--insert-before` optoins to
customize the location of the new reverted commits.

`jj backout` will subsequently be deprecated.

Closes #5688.
2025-03-17 15:03:29 +00:00
Yuya Nishihara
789249541e cargo: remove "anyhow" which was used only in config tests
It's not important to remove anyhow dependency, but there was no reason to use
anyhow.
2025-03-17 01:39:55 +00:00
Yuya Nishihara
dd0e4f8f66 tests: define config TestCase types early
I feel it's easier to follow if types are defined first.
2025-03-17 01:39:55 +00:00
Yuya Nishihara
93aa697ca1 tests: remove redundant .to_path_buf() from test_config_path() 2025-03-17 01:39:55 +00:00
Yuya Nishihara
0e32223d9a tests: inline config TestCase::run() into test function, use assert!()s
We generally use panicking functions in tests.
2025-03-17 01:39:55 +00:00
Yuya Nishihara
27c777b3e5 tests: reorganize config TestCase as parameterized test_case
The TestCase type will be a pure value type.
2025-03-17 01:39:55 +00:00
Yuya Nishihara
cdc2ddf822 tests: remove generic parameters from config TestCase
We don't care about the memory layout here, and it'll become verbose to spell
them out in the following patches.
2025-03-17 01:39:55 +00:00
Jonathan Gilchrist
153c972822 diff-editor: Always use Section::FileMode when creating or deleting files
The code in this area gets significantly simpler, since there's no
longer any ambiguity to resolve. The scm-record changes expect that any
mode changes are represented by file mode sections, and adds UI hooks to
simplify working with them (e.g. automatically de-selecting a deletion
mode change if any lines in the file are de-selected, since the file
still needs to exist to hold those lines).

If the user selects a file mode change, the new mode comes back as part
of .get_selected_contents(), so we can use this directly to figure out
whether the file was removed or just changed.
2025-03-16 18:18:46 +00:00
David Rieber
7e1901fefa jj fix: Refactor jj fix CLI, move some logic to lib to make it usable in other tools (e.g. in servers).
* The lib part should not deal with tools, or tool config, or running stuff in subprocesses. That stays in the CLI.
* Adds a fix_files function. This is the entry point.
* Adds a FileFixer trait with a single method to process a set of files. This is a high-level plugin point.
* Adds a ParallelFileFixer which implements the FileFixer trait and invokes a function to fix one file a time, in parallel.
* The CLI uses ParallelFileFixer.

The FileFixer trait allows environments (other than jj CLI) to plug in their own implementation; for example, a server could implement a FileFixer that sends RPCs to a "formatting service".
2025-03-16 17:59:22 +00:00
Emily
cce229d914 config: warn on unsupported git.subprocess = false 2025-03-16 06:07:28 +00:00
Emily
a56b78bdb6 git: make git2 support optional
This helps us prepare for removing the functionality down the line and
makes things easier for people building or packaging their own Jujutsu.
2025-03-16 06:07:28 +00:00
Baltasar Dinis
142ba74427 cli: change debug logging behaviour to whitelist jj crates
The current behaviour means (transitively) dependent crates' debug logs end up
in our logs when `--debug` is active.

The biggest offender here is `globset`, imported from the `ignore
crate`. These logs are extremely noisy and mostly irrelevant from our usecase.

This commit changes this behaviour to whitelist `jj` related debug logs,
while allowing more debugging to come from env vars
2025-03-16 04:12:01 +00:00