summaryrefslogtreecommitdiff
path: root/makima/src/daemon/task/manager.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-03-10 17:33:23 +0000
committerGitHub <noreply@github.com>2026-03-10 17:33:23 +0000
commit3679ceb3325033faa2f889ef3dfee5668ef7aeea (patch)
treea0975085bd9a3ef4a8545cf33c8669c7b51e4efb /makima/src/daemon/task/manager.rs
parentf49aaa39a32661b54c109ba002d24cbdf73f4ea3 (diff)
downloadsoryu-3679ceb3325033faa2f889ef3dfee5668ef7aeea.tar.gz
soryu-3679ceb3325033faa2f889ef3dfee5668ef7aeea.zip
feat: soryu-co/soryu - makima: Fix build errors in daemon protocol and task manager (#89)v0.5.0
Diffstat (limited to 'makima/src/daemon/task/manager.rs')
-rw-r--r--makima/src/daemon/task/manager.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/makima/src/daemon/task/manager.rs b/makima/src/daemon/task/manager.rs
index acdf4ad..ca97453 100644
--- a/makima/src/daemon/task/manager.rs
+++ b/makima/src/daemon/task/manager.rs
@@ -3672,6 +3672,39 @@ impl TaskManager {
Ok(())
}
+ /// Resolve the best diff base reference for a given base branch.
+ /// Tries origin/{base} first, then falls back to local {base} branch.
+ async fn resolve_diff_base(path: &std::path::PathBuf, base: &str) -> Option<String> {
+ // Try origin/{base} first
+ let origin_ref = format!("origin/{}", base);
+ let check_origin = tokio::process::Command::new("git")
+ .current_dir(path)
+ .args(["rev-parse", "--verify", &origin_ref])
+ .output()
+ .await;
+
+ if let Ok(output) = check_origin {
+ if output.status.success() {
+ return Some(format!("origin/{}...HEAD", base));
+ }
+ }
+
+ // Fall back to local branch
+ let check_local = tokio::process::Command::new("git")
+ .current_dir(path)
+ .args(["rev-parse", "--verify", base])
+ .output()
+ .await;
+
+ if let Ok(output) = check_local {
+ if output.status.success() {
+ return Some(format!("{}...HEAD", base));
+ }
+ }
+
+ None
+ }
+
/// Handle GetWorktreeDiff command - get git diff for a task's worktree.
async fn handle_get_worktree_diff(
&self,