From d3080202aefc43995df837edddd216d91dd9d1d8 Mon Sep 17 00:00:00 2001 From: Martin von Zweigbergk Date: Wed, 30 Oct 2024 09:41:38 -0700 Subject: [PATCH] cli: workspace update-stale: set description on recovery commit The recover commit we create in some cases (when an operation has been lost) doesn't currently have a description. That makes it easy to miss that it's special. --- cli/src/commands/workspace/update_stale.rs | 10 ++++++++++ cli/tests/test_workspaces.rs | 18 +++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/cli/src/commands/workspace/update_stale.rs b/cli/src/commands/workspace/update_stale.rs index 58c1f56dbc..1a2400e336 100644 --- a/cli/src/commands/workspace/update_stale.rs +++ b/cli/src/commands/workspace/update_stale.rs @@ -125,6 +125,16 @@ fn create_and_check_out_recovery_commit( vec![commit_id.clone()], commit.tree_id().clone(), ) + .set_description( + "recovery commit from `jj workspace update-stale` + +This commit contains changes that were written to the working copy by an +operation that was subsequently lost (or was at least unavailable when you ran +`jj workspace update-stale`). Because the operation was lost, we don't know +what the parent commits are supposed to be. That means that the diff compared +to the current parents may contain changes from multiple commits. +", + ) .write()?; mut_repo.set_wc_commit(workspace_id, new_commit.id().clone())?; let repo = tx.commit("recovery commit"); diff --git a/cli/tests/test_workspaces.rs b/cli/tests/test_workspaces.rs index db6f07e513..f5de1d0964 100644 --- a/cli/tests/test_workspaces.rs +++ b/cli/tests/test_workspaces.rs @@ -689,14 +689,14 @@ fn test_workspaces_current_op_discarded_by_other() { "###); let (stdout, stderr) = test_env.jj_cmd_ok(&secondary_path, &["workspace", "update-stale"]); - insta::assert_snapshot!(stderr, @r#" + insta::assert_snapshot!(stderr, @r###" Failed to read working copy's current operation; attempting recovery. Error message from read attempt: Object 8d4abed655badb70b1bab62aa87136619dbc3c8015a8ce8dfb7abfeca4e2f36c713d8f84e070a0613907a6cee7e1cc05323fe1205a319b93fe978f11a060c33c of type operation not found - Created and checked out recovery commit 62f70695e3b0 - "#); + Created and checked out recovery commit 863c247c4ee8 + "###); insta::assert_snapshot!(stdout, @""); insta::assert_snapshot!(get_log_output(&test_env, &main_path), @r###" - ○ b0b400439a82 secondary@ + ○ b2aa3385aa5b secondary@ ○ 96b31dafdc41 │ @ 6c051bd1ccd5 default@ ├─╯ @@ -718,7 +718,7 @@ fn test_workspaces_current_op_discarded_by_other() { A added D deleted M modified - Working copy : kmkuslsw b0b40043 (no description set) + Working copy : kmkuslsw b2aa3385 recovery commit from `jj workspace update-stale` Parent commit: rzvqmyuk 96b31daf (empty) (no description set) "###); // The modified file should have the same contents it had before (not reset to @@ -730,10 +730,10 @@ fn test_workspaces_current_op_discarded_by_other() { let (stdout, stderr) = test_env.jj_cmd_ok(&secondary_path, &["evolog"]); insta::assert_snapshot!(stderr, @""); insta::assert_snapshot!(stdout, @r###" - @ kmkuslsw test.user@example.com 2001-02-03 08:05:18 secondary@ b0b40043 - │ (no description set) - ○ kmkuslsw hidden test.user@example.com 2001-02-03 08:05:18 62f70695 - (empty) (no description set) + @ kmkuslsw test.user@example.com 2001-02-03 08:05:18 secondary@ b2aa3385 + │ recovery commit from `jj workspace update-stale` + ○ kmkuslsw hidden test.user@example.com 2001-02-03 08:05:18 863c247c + (empty) recovery commit from `jj workspace update-stale` "###); }