From e9245b630d728672d2b3d6ff9265fa4f1a86f13a Mon Sep 17 00:00:00 2001 From: Defelo Date: Mon, 23 Feb 2026 17:37:43 +0100 Subject: [PATCH] cli: don't override existing seeding scope in `rad clone` --- crates/radicle-cli/src/commands/clone.rs | 14 +++++++++++++- crates/radicle-cli/src/commands/clone/args.rs | 3 +-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/crates/radicle-cli/src/commands/clone.rs b/crates/radicle-cli/src/commands/clone.rs index f90a77df..5989028c 100644 --- a/crates/radicle-cli/src/commands/clone.rs +++ b/crates/radicle-cli/src/commands/clone.rs @@ -10,6 +10,7 @@ use radicle::git::raw; use radicle::identity::doc; use radicle::identity::doc::RepoId; use radicle::node; +use radicle::node::policy; use radicle::node::policy::Scope; use radicle::node::{Handle as _, Node}; use radicle::prelude::*; @@ -121,6 +122,8 @@ enum CloneError { NoSeeds(RepoId), #[error("fetch: {0}")] Fetch(#[from] sync::FetchError), + #[error("policy store: {0}")] + PolicyStore(#[from] policy::store::Error), } struct Checkout { @@ -203,12 +206,21 @@ impl Checkout { fn clone( id: RepoId, directory: Option, - scope: Scope, + scope: Option, settings: SyncSettings, node: &mut Node, profile: &Profile, bare: bool, ) -> Result { + let scope = match scope { + Some(scope) => scope, + None => profile + .policies()? + .seed_policy(&id)? + .scope() + .unwrap_or(Scope::Followed), + }; + // Seed repository. if node.seed(id, scope)? { term::success!( diff --git a/crates/radicle-cli/src/commands/clone/args.rs b/crates/radicle-cli/src/commands/clone/args.rs index d45c8e2c..0f987f07 100644 --- a/crates/radicle-cli/src/commands/clone/args.rs +++ b/crates/radicle-cli/src/commands/clone/args.rs @@ -62,10 +62,9 @@ pub struct Args { /// Follow scope #[arg( long, - default_value_t = Scope::Followed, value_parser = terminal::args::ScopeParser )] - pub(super) scope: Scope, + pub(super) scope: Option, #[clap(flatten)] pub(super) sync: SyncArgs,