From eaf82eb07c3c500fec6faea33bf32d64e1b391c1 Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Mon, 3 Nov 2025 13:45:41 +0100 Subject: [PATCH] feat: method to check remote divergence --- src/build_tools/git.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/build_tools/git.rs b/src/build_tools/git.rs index eb5a90c..adf1701 100644 --- a/src/build_tools/git.rs +++ b/src/build_tools/git.rs @@ -34,13 +34,29 @@ impl Git { self.cmd(vec!["reset".into(), "--hard".into()]) } + pub fn check_remote_diverges(&self) -> Result { + if !self.clone_exists() { + return Ok(false); + } + let repo = Repository::open(&self.dir) + .map_err(|e| format!("Failed to open local git repo: {e:?}"))?; + let remote = repo + .find_remote("origin") + .map_err(|e| format!("Failed to find origin remote: {e:?}"))?; + if remote.url().unwrap_or_default() != self.get_repo() { + Ok(true) + } else { + Ok(false) + } + } + pub fn get_override_remote_url_job(&self) -> WorkerJob { let dir = self.dir.clone(); let n_remote_url = self.get_repo(); WorkerJob::new_func(Box::new(move || { if let Ok(repo) = Repository::open(dir) { if let Ok(remote) = repo.find_remote("origin") { - if remote.url().unwrap_or("") != n_remote_url { + if remote.url().unwrap_or_default() != n_remote_url { if repo.remote_set_url("origin", &n_remote_url).is_ok() { return FuncWorkerOut { success: true, -- 2.51.2