diff --git a/CHANGELOG.md b/CHANGELOG.md index 71b8f9348c..169f2650d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Graph node symbols are now configurable via `ui.graph.default_node` and `ui.graph.elided_node`. +* `jj log` now includes synthetic nodes in the graph where some revisions were + elided. + * `jj squash` now accepts `--from` and `--into` (mutually exclusive with `-r`). It can thereby be for all use cases where `jj move` can be used. diff --git a/cli/src/commands/log.rs b/cli/src/commands/log.rs index 8bf661fff1..c6988da8c9 100644 --- a/cli/src/commands/log.rs +++ b/cli/src/commands/log.rs @@ -27,14 +27,21 @@ use crate::diff_util::{self, DiffFormatArgs}; use crate::graphlog::{get_graphlog, Edge}; use crate::ui::Ui; -/// Show commit history +/// Show revision history +/// +/// Renders a graphical view of the project's history, ordered with children +/// before parents. By default, the output only includes mutable revisions, +/// along with some additional revisions for context. +/// +/// Spans of revisions that are not included in the graph per `--revisions` are +/// rendered as a synthetic node labeled "(elided revisions)". #[derive(clap::Args, Clone, Debug)] pub(crate) struct LogArgs { /// Which revisions to show. Defaults to the `revsets.log` setting, or /// `@ | ancestors(immutable_heads().., 2) | trunk()` if it is not set. #[arg(long, short)] revisions: Vec, - /// Show commits modifying the given paths + /// Show revisions modifying the given paths #[arg(value_hint = clap::ValueHint::AnyPath)] paths: Vec, /// Show revisions in the opposite order (older revisions first) diff --git a/cli/src/config-schema.json b/cli/src/config-schema.json index 4ecd168163..8bbc7fa68e 100644 --- a/cli/src/config-schema.json +++ b/cli/src/config-schema.json @@ -141,7 +141,7 @@ "log-synthetic-elided-nodes": { "type": "boolean", "description": "Whether to render elided parts of the graph as synthetic nodes.", - "default": false + "default": true }, "editor": { "type": "string", diff --git a/cli/src/config/misc.toml b/cli/src/config/misc.toml index 94e0f9db4c..0b2e1b94db 100644 --- a/cli/src/config/misc.toml +++ b/cli/src/config/misc.toml @@ -14,7 +14,7 @@ diff-instructions = true paginate = "auto" pager = { command = ["less", "-FRX"], env = { LESSCHARSET = "utf-8" } } log-word-wrap = false -log-synthetic-elided-nodes = false +log-synthetic-elided-nodes = true [snapshot] max-new-file-size = "1MiB" diff --git a/cli/tests/cli-reference@.md.snap b/cli/tests/cli-reference@.md.snap index cd816acc3a..5336ada266 100644 --- a/cli/tests/cli-reference@.md.snap +++ b/cli/tests/cli-reference@.md.snap @@ -118,7 +118,7 @@ To get started, see the tutorial at https://github.com/martinvonz/jj/blob/main/d * `git` — Commands for working with the underlying Git repo * `init` — Create a new repo in the given directory * `interdiff` — Compare the changes of two commits -* `log` — Show commit history +* `log` — Show revision history * `move` — Move changes from one revision into another * `new` — Create a new, empty change and (by default) edit it in the working copy * `next` — Move the current working copy commit to the next child revision in the @@ -1010,13 +1010,17 @@ This excludes changes from other commits by temporarily rebasing `--from` onto ` ## `jj log` -Show commit history +Show revision history + +Renders a graphical view of the project's history, ordered with children before parents. By default, the output only includes mutable revisions, along with some additional revisions for context. + +Spans of revisions that are not included in the graph per `--revisions` are rendered as a synthetic node labeled "(elided revisions)". **Usage:** `jj log [OPTIONS] [PATHS]...` ###### **Arguments:** -* `` — Show commits modifying the given paths +* `` — Show revisions modifying the given paths ###### **Options:** diff --git a/cli/tests/test_log_command.rs b/cli/tests/test_log_command.rs index f5ce34c262..5601b53610 100644 --- a/cli/tests/test_log_command.rs +++ b/cli/tests/test_log_command.rs @@ -1356,6 +1356,7 @@ fn test_elided() { // Elide some commits from each side of the merge. It's unclear that a revision // was skipped on the left side. + test_env.add_config("ui.log-synthetic-elided-nodes = false"); insta::assert_snapshot!(get_log("@ | @- | description(initial)"), @r###" @ merge ├─╮