diff --git a/cli/src/commands/run.rs b/cli/src/commands/run.rs index cd343d490a8..9e0955715de 100644 --- a/cli/src/commands/run.rs +++ b/cli/src/commands/run.rs @@ -39,8 +39,6 @@ pub struct RunArgs { /// The command to run across all selected revisions. shell_command: String, /// The revisions to change. - /// Multiple revsets are accepted and the work will be done on a - /// intersection of them. #[arg(long, short, default_value = "@")] revisions: Vec, /// A no-op option to match the interface of `git rebase -x`. @@ -55,16 +53,16 @@ pub fn cmd_run(ui: &mut Ui, command: &CommandHelper, args: &RunArgs) -> Result<( let workspace_command = command.workspace_helper(ui)?; let _resolved_commits = resolve_multiple_nonempty_revsets(&args.revisions, &workspace_command, ui)?; - let _jobs = if let Some(_jobs) = args.jobs { - _jobs - } else { - // Use all available cores - - // SAFETY: - // We use a internal constant of 4 threads, if it fails - let available = - std::thread::available_parallelism().unwrap_or(NonZeroUsize::new(4).unwrap()); - available.into() - }; + let _jobs = args + .jobs + .filter(|j| *j > 0) + .or_else(|| { + // Use all available cores + std::thread::available_parallelism() + .ok() + .and_then(|t| t.try_into().ok()) + }) + // Fallback to two cores as we don't know on which system we're running on. + .unwrap_or(2usize); Err(user_error("This is a stub, do not use")) }