Skip to content

Commit

Permalink
run: Fix up various things.
Browse files Browse the repository at this point in the history
Adress the post-merge comments from #2486, which found a doc comment
inaccurate and to not blindly ignore `-j 0` which would've worked until now.
I've also reduced the default `jobs` size to one, as it's user-visible configuration
which determines how many processes should run.

Thanks to @necauqua the controversial `unsafe` usage was already removed.

I've omitted to change `revisions` from an Vec to a RevisonArg for the moment, 
as I will keep working on the file anyway.
  • Loading branch information
PhilipMetzger committed Nov 23, 2023
1 parent 39b065f commit 123d443
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions cli/src/commands/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@

//! This file contains the internal implementation of `run`.
use std::num::NonZeroUsize;

use crate::cli_util::{
resolve_multiple_nonempty_revsets, user_error, CommandError, CommandHelper, RevisionArg,
};
Expand All @@ -39,8 +37,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<RevisionArg>,
/// A no-op option to match the interface of `git rebase -x`.
Expand All @@ -55,16 +51,21 @@ 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()
};
// Jobs are resolved in this order:
// 1. Commmandline argument iff > 0.

Check failure on line 55 in cli/src/commands/run.rs

View workflow job for this annotation

GitHub Actions / Codespell

Commmandline ==> Commandline
// 2. the amount of cores available.
// 3. a single job, if all above fails.
let _jobs = args
.jobs
// We need to fixup a `jj run -j0` input, as 0 jobs is a invalid state.
.filter(|j| *j > 0)
.or_else(|| {
// Use all available cores
std::thread::available_parallelism()
.ok()
.and_then(|t| t.try_into().ok())
})
// Fallback to a single user-visible job.
.unwrap_or(1usize);
Err(user_error("This is a stub, do not use"))
}

0 comments on commit 123d443

Please sign in to comment.