From 49fd177c47943ab12ca0f593bfa34c6d660dda4d Mon Sep 17 00:00:00 2001 From: Ilya Grigoriev Date: Mon, 20 Feb 2023 20:38:52 -0800 Subject: [PATCH] templater: Allow separate styling for change and commit ids --- docs/config.md | 9 +++++++++ src/config/templates.toml | 10 ++++++---- tests/test_commit_template.rs | 30 +++++++++++++++++++++++++++--- 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/docs/config.md b/docs/config.md index 2d0885960..a1ebc4c8a 100644 --- a/docs/config.md +++ b/docs/config.md @@ -152,6 +152,15 @@ Can be customized by the `format_short_id()` template alias. 'format_short_id(id)' = 'id.short(12)' ``` +To customize these separately, use the `format_short_commit_id()` and +`format_short_change_id()` aliases: + +```toml +[template-aliases] +# Uppercase change ids. `jj` treats change and commit ids as case-insensitive. +'format_short_change_id(id)' = 'format_short_id(id).upper()' +``` + ### Relative timestamps Can be customized by the `format_timestamp()` template alias. diff --git a/src/config/templates.toml b/src/config/templates.toml index e964a24cc..33978a350 100644 --- a/src/config/templates.toml +++ b/src/config/templates.toml @@ -1,6 +1,6 @@ [templates] commit_summary = ''' -format_short_id(commit_id) " " +format_short_commit_id(commit_id) " " if(description, description.first_line(), description_placeholder) ''' @@ -8,15 +8,15 @@ log = ''' label(if(current_working_copy, "working_copy"), separate(" ", if(divergent, - label("divergent", format_short_id(change_id) "??"), - format_short_id(change_id)), + label("divergent", format_short_change_id(change_id) "??"), + format_short_change_id(change_id)), format_short_signature(author), format_timestamp(committer.timestamp()), branches, tags, working_copies, git_head, - format_short_id(commit_id), + format_short_commit_id(commit_id), if(conflict, label("conflict", "conflict")), ) "\n" @@ -47,6 +47,8 @@ show = 'show' # Hook points for users to customize the default templates: 'format_short_id(id)' = 'id.shortest(12)' +'format_short_change_id(id)' = 'format_short_id(id)' +'format_short_commit_id(id)' = 'format_short_id(id)' 'format_short_signature(signature)' = 'signature.email()' 'format_time_range(time_range)' = ''' time_range.start().ago() label("time", ", lasted ") time_range.duration()''' diff --git a/tests/test_commit_template.rs b/tests/test_commit_template.rs index c95961f2b..8f90eb968 100644 --- a/tests/test_commit_template.rs +++ b/tests/test_commit_template.rs @@ -177,15 +177,39 @@ fn test_log_customize_short_id() { test_env.jj_cmd_success(&repo_path, &["describe", "-m", "first"]); + // Customize both the commit and the change id let decl = "template-aliases.'format_short_id(id)'"; let stdout = test_env.jj_cmd_success( &repo_path, - &["log", "--config-toml", &format!("{decl}='id.shortest()'")], + &[ + "log", + "--config-toml", + &format!("{decl}='id.shortest(5).prefix().upper() \"_\" id.shortest(5).rest()'"), + ], ); insta::assert_snapshot!(stdout, @r###" - @ q test.user@example.com 2001-02-03 04:05:08.000 +07:00 6 + @ Q_pvun test.user@example.com 2001-02-03 04:05:08.000 +07:00 6_9542 │ (empty) first - o z 1970-01-01 00:00:00.000 +00:00 0 + o Z_zzzz 1970-01-01 00:00:00.000 +00:00 0_0000 + (empty) (no description set) + "###); + + // Customize only the change id + let stdout = test_env.jj_cmd_success( + &repo_path, + &[ + "log", + "--config-toml", + r#" + [template-aliases] + 'format_short_change_id(id)'='format_short_id(id).upper()' + "#, + ], + ); + insta::assert_snapshot!(stdout, @r###" + @ QPVUNTSMWLQT test.user@example.com 2001-02-03 04:05:08.000 +07:00 69542c1984c1 + │ (empty) first + o ZZZZZZZZZZZZ 1970-01-01 00:00:00.000 +00:00 000000000000 (empty) (no description set) "###); }