From 4268c80c84bb5186397dcc9cdaf88e60fc727682 Mon Sep 17 00:00:00 2001 From: Ilya Grigoriev Date: Sat, 4 Feb 2023 15:55:03 -0800 Subject: [PATCH] Refactor and rename `rewrite_multiple_rewriteable_revsets` to be more general We'll soon need that functionality without the checking for rewriteable part. --- src/cli_util.rs | 5 +---- src/commands/mod.rs | 14 +++++++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/cli_util.rs b/src/cli_util.rs index 38a824dc4..3c5ab7b87 100644 --- a/src/cli_util.rs +++ b/src/cli_util.rs @@ -1396,7 +1396,7 @@ fn load_revset_aliases( Ok(aliases_map) } -pub fn resolve_multiple_rewritable_revsets( +pub fn resolve_multiple_nonempty_revsets( revision_args: &[RevisionArg], workspace_command: &WorkspaceCommandHelper, ) -> Result, CommandError> { @@ -1404,9 +1404,6 @@ pub fn resolve_multiple_rewritable_revsets( for revset in revision_args { let revisions = workspace_command.resolve_revset(revset)?; workspace_command.check_non_empty(&revisions)?; - for commit in &revisions { - workspace_command.check_rewritable(commit)?; - } acc.extend(revisions); } Ok(acc) diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 8d75c50ee..26d9b4f95 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -46,7 +46,7 @@ use pest::Parser; use crate::cli_util::{ self, check_stale_working_copy, print_checkout_stats, resolve_base_revs, - resolve_multiple_rewritable_revsets, run_ui_editor, serialize_config_value, short_commit_hash, + resolve_multiple_nonempty_revsets, run_ui_editor, serialize_config_value, short_commit_hash, user_error, user_error_with_hint, Args, CommandError, CommandHelper, DescriptionArg, RevisionArg, WorkspaceCommandHelper, DESCRIPTION_PLACEHOLDER_TEMPLATE, }; @@ -1870,7 +1870,11 @@ fn cmd_duplicate( ) -> Result<(), CommandError> { let mut workspace_command = command.workspace_helper(ui)?; let to_duplicate: IndexSet = - resolve_multiple_rewritable_revsets(&args.revisions, &workspace_command)?; + resolve_multiple_nonempty_revsets(&args.revisions, &workspace_command)?; + to_duplicate + .iter() + .map(|commit| workspace_command.check_rewritable(commit)) + .try_collect()?; let mut duplicated_old_to_new: IndexMap = IndexMap::new(); let mut tx = workspace_command @@ -1923,7 +1927,11 @@ fn cmd_abandon( args: &AbandonArgs, ) -> Result<(), CommandError> { let mut workspace_command = command.workspace_helper(ui)?; - let to_abandon = resolve_multiple_rewritable_revsets(&args.revisions, &workspace_command)?; + let to_abandon = resolve_multiple_nonempty_revsets(&args.revisions, &workspace_command)?; + to_abandon + .iter() + .map(|commit| workspace_command.check_rewritable(commit)) + .try_collect()?; let transaction_description = if to_abandon.len() == 1 { format!("abandon commit {}", to_abandon[0].id().hex()) } else {