From 9d36bf5a0568c102c9aa784fe7cbb94f12cfd1f8 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Sat, 24 Oct 2026 01:07:13 +1100 Subject: [PATCH] Fix shallow_clone does not cancel during fetch and checkout Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/lib.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fb4ac12..8c08af5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -97,18 +97,17 @@ impl Repository { let mut progress = TracingProgress::new("Cloning with worktree"); + let should_interrupt = match &cancellation_token { + Some(token) => token.get_atomic(), + None => &AtomicBool::new(false), + }; + Ok(Self( Self::prepare_fetch(url, path, create::Kind::WithWorktree)? - .fetch_then_checkout(&mut progress, &AtomicBool::new(false)) + .fetch_then_checkout(&mut progress, should_interrupt) .map_err(GitError::new)? .0 - .main_worktree( - &mut progress, - cancellation_token - .as_ref() - .map(GitCancellationToken::get_atomic) - .unwrap_or(&AtomicBool::new(false)), - ) + .main_worktree(&mut progress, should_interrupt) .map_err(GitError::new)? .0 .into(),