Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cli: workspace update-stale: set description on recovery commit #4738

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions cli/src/commands/workspace/update_stale.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Optional)

The first line is a bit inconspicuous and doesn't make it clear that the commit is machine-generated. Perhaps add JJ AUTO-RECOVERY: before it? Then, people will know that something strange happened, and what to search for and ask about.

We could also try it as is and see how many of these commits get generated and how in conspicuous they are.

BTW, I'm not sure everyone agrees, but I generally like the idea of having jj use JJ SOMETHING: as a marker for some text that is special to jj, extending the JJ: syntax we use in description editor (I don't mean to do this religiously, but it makes sense to me here).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have a strong feeling, but it would be nice if the description looked unusual. User might push the recovery commit by mistake if it looked like a normal commit.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should prefix it with JJ: and use that private commits feature to ensure that commits starting with JJ: don’t get pushed by default.


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");
Expand Down
18 changes: 9 additions & 9 deletions cli/tests/test_workspaces.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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@
├─╯
Expand All @@ -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
Expand All @@ -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 [email protected] 2001-02-03 08:05:18 secondary@ b0b40043
(no description set)
○ kmkuslsw hidden [email protected] 2001-02-03 08:05:18 62f70695
(empty) (no description set)
@ kmkuslsw [email protected] 2001-02-03 08:05:18 secondary@ b2aa3385
recovery commit from `jj workspace update-stale`
○ kmkuslsw hidden [email protected] 2001-02-03 08:05:18 863c247c
(empty) recovery commit from `jj workspace update-stale`
"###);
}

Expand Down