diff --git a/cli/tests/test_tree_level_conflicts.rs b/cli/tests/test_tree_level_conflicts.rs index 6a0291ffd..5ce7e02a6 100644 --- a/cli/tests/test_tree_level_conflicts.rs +++ b/cli/tests/test_tree_level_conflicts.rs @@ -71,13 +71,13 @@ fn test_enable_tree_level_conflicts() { let stdout = test_env.jj_cmd_success(&repo_path, &["diff"]); insta::assert_snapshot!(stdout, @""); - // If we create new commit off of an unconflicted commit, it also appears - // non-empty + // If we create new commit off of an unconflicted commit, it correctly appears + // empty test_env.jj_cmd_success(&repo_path, &["new", "k"]); let stdout = test_env.jj_cmd_success(&repo_path, &["log", "-r=@"]); insta::assert_snapshot!(stdout, @r###" - @ yostqsxw test.user@example.com 2001-02-03 04:05:16.000 +07:00 f5e911f1 - │ (no description set) + @ yostqsxw test.user@example.com 2001-02-03 04:05:15.000 +07:00 112f0ac2 + │ (empty) (no description set) ~ "###); let stdout = test_env.jj_cmd_success(&repo_path, &["diff"]); diff --git a/lib/src/backend.rs b/lib/src/backend.rs index 86dd2a04b..a4ff9badd 100644 --- a/lib/src/backend.rs +++ b/lib/src/backend.rs @@ -148,7 +148,7 @@ content_hash! { // TODO(#1624): Delete this type at some point in the future, when we decide to drop // support for conflicts in older repos, or maybe after we have provided an upgrade // mechanism. -#[derive(Debug, PartialEq, Eq, Clone)] +#[derive(Debug, Clone)] pub enum MergedTreeId { /// The tree id of a legacy tree Legacy(TreeId), @@ -156,6 +156,16 @@ pub enum MergedTreeId { Merge(Merge), } +impl PartialEq for MergedTreeId { + /// Overridden to make conflict-free trees be considered equal even if their + /// `MergedTreeId` variant is different. + fn eq(&self, other: &Self) -> bool { + self.to_merge() == other.to_merge() + } +} + +impl Eq for MergedTreeId {} + impl ContentHash for MergedTreeId { fn hash(&self, state: &mut impl digest::Update) { match self {