Browse Source

Fix clone directory copying

tags/v0.3.12-rc0
Philipp Oppermann 7 months ago
parent
commit
9eac013637
Failed to extract signature
4 changed files with 34 additions and 4 deletions
  1. +7
    -0
      Cargo.lock
  2. +2
    -0
      binaries/daemon/src/lib.rs
  3. +1
    -0
      libraries/core/Cargo.toml
  4. +24
    -4
      libraries/core/src/build/git.rs

+ 7
- 0
Cargo.lock View File

@@ -2991,6 +2991,7 @@ dependencies = [
"dora-message",
"dunce",
"eyre",
"fs_extra",
"git2",
"itertools 0.14.0",
"log",
@@ -4328,6 +4329,12 @@ dependencies = [
"percent-encoding",
]

[[package]]
name = "fs_extra"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"

[[package]]
name = "fsevent-sys"
version = "4.1.0"


+ 2
- 0
binaries/daemon/src/lib.rs View File

@@ -998,6 +998,8 @@ impl Daemon {
base_working_dir,
uv,
};
self.git_manager.clear_planned_builds(session_id);

let nodes = dataflow_descriptor.resolve_aliases_and_set_defaults()?;

let mut tasks = Vec::new();


+ 1
- 0
libraries/core/Cargo.toml View File

@@ -30,3 +30,4 @@ dunce = "1.0.5"
itertools = "0.14"
url = { version = "2.5.4", optional = true }
git2 = { workspace = true, optional = true }
fs_extra = "1.3.0"

+ 24
- 4
libraries/core/src/build/git.rs View File

@@ -144,6 +144,10 @@ impl GitManager {
let path = path.join(commit_hash);
Ok(dunce::simplified(&path).to_owned())
}

pub fn clear_planned_builds(&mut self, session_id: SessionId) {
self.prepared_builds.remove(&session_id);
}
}

pub struct GitFolder {
@@ -155,7 +159,7 @@ impl GitFolder {
pub async fn prepare(self, logger: &mut impl BuildLogger) -> eyre::Result<PathBuf> {
let GitFolder { reuse } = self;

eprintln!("reuse: {reuse:?}");
tracing::info!("reuse: {reuse:?}");
let clone_dir = match reuse {
ReuseOptions::NewClone {
target_dir,
@@ -208,9 +212,25 @@ impl GitFolder {
target_dir,
commit_hash,
} => {
tokio::fs::copy(&from, &target_dir)
.await
.context("failed to copy repo clone")?;
let from_clone = from.clone();
let to = target_dir.clone();
tokio::task::spawn_blocking(move || {
std::fs::create_dir_all(&to)
.context("failed to create directory for copying git repo")?;
fs_extra::dir::copy(
&from_clone,
&to,
&fs_extra::dir::CopyOptions::new().content_only(true),
)
.with_context(|| {
format!(
"failed to copy repo clone from `{}` to `{}`",
from_clone.display(),
to.display()
)
})
})
.await??;

logger
.log_message(


Loading…
Cancel
Save