Fixes https://github.com/jj-vcs/jj/discussions/5951
There have also been discussions on Discord on and off; people seem to
agree that `--preserve-descendant-content` is clear if verbose. I hope
that a short alias might address that (though I don't intent to make a
habit of having many cryptic short aliases), though we could also decide
to skip it for now and see whether it's really needed.
Some other options considered:
- `keep-descendant-content`. In theory, I like it better, but it'd be
confusingly similar to `jj squash --keep-emptied` once `jj squash
--keep-descendant-content` was implemented, and would also conflict
with its tab completion.
- `--preserve-descendant-contents` with `s` at the end.
- The short version could be `-P`, but that would be confusable with
`--preserve-content` for `jj rebase`, discussed below. Also, currently
single-capital-letter flags are usually about lifting some
restriction, e.g. `-B` for `--allow-backwards`.
- `verbatim-descendants`
- `reparent-descendants`
The last two look a bit cryptic, depending on the person.
Note that `jj rebase` will also need a `--preserve-content` flag for
preserving the content of the commit actually being rebased. I'm not
sure whether that should also be `--pc` or not.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.