cli: status: evaluate conflicts revset as a user expression

Otherwise, it would panic if immutable_heads() contained unresolved symbols.
This commit is contained in:
Yuya Nishihara 2024-05-07 10:43:20 +09:00
parent 76b6d031d7
commit c1d934a08a

View File

@ -95,14 +95,16 @@ pub(crate) fn cmd_status(
let wc_revset = RevsetExpression::commit(wc_commit.id().clone()); let wc_revset = RevsetExpression::commit(wc_commit.id().clone());
// Ancestors with conflicts, excluding the current working copy commit. // Ancestors with conflicts, excluding the current working copy commit.
let ancestors_conflicts = RevsetExpression::filter(RevsetFilterPredicate::HasConflict) let ancestors_conflicts = workspace_command
.intersection(&wc_revset.ancestors()) .attach_revset_evaluator(
.minus(&wc_revset) RevsetExpression::filter(RevsetFilterPredicate::HasConflict)
.minus(&revset_util::parse_immutable_expression( .intersection(&wc_revset.ancestors())
&workspace_command.revset_parse_context(), .minus(&wc_revset)
)?) .minus(&revset_util::parse_immutable_expression(
.evaluate_programmatic(repo.as_ref())? &workspace_command.revset_parse_context(),
.iter() )?),
)?
.evaluate_to_commit_ids()?
.collect(); .collect();
workspace_command.report_repo_conflicts(formatter, repo, ancestors_conflicts)?; workspace_command.report_repo_conflicts(formatter, repo, ancestors_conflicts)?;
} else { } else {