diff --git a/hive-c0re/src/workers/knowledge.rs b/hive-c0re/src/workers/knowledge.rs index 999a1dbe..dbd249a9 100644 --- a/hive-c0re/src/workers/knowledge.rs +++ b/hive-c0re/src/workers/knowledge.rs @@ -292,8 +292,14 @@ pub async fn pull(coord: &Coordinator) -> Result<()> { Some(header) => crate::lifecycle::git_command_authed(header), None => crate::lifecycle::git_command(), }; + // Remote and branch are named explicitly. A bare `git pull` merges + // whatever `branch..merge` lists, and a clone with more than one + // such entry aborts with "Cannot fast-forward to multiple branches" — + // taking /knowledge out across the hive over local config this daemon + // never writes and cannot see. `origin` exists by construction: the + // `remote set-url` above just set it. let out = cmd - .args(["-C", LOCAL_DIR, "pull", "--ff-only"]) + .args(["-C", LOCAL_DIR, "pull", "--ff-only", "origin", "main"]) .output() .await .context("git pull knowledge")?;