From bfd374fe81846e24f46b2c19c6aba52391bebb76 Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Sun, 15 Oct 2023 18:52:41 +0000 Subject: [PATCH] fix: better pull/checkout strategy with fetch, checkout and merge --- src/build_tools/git.rs | 44 ++++++++++++----------------- src/builders/build_basalt.rs | 6 ++-- src/builders/build_libsurvive.rs | 6 ++-- src/builders/build_monado.rs | 6 ++-- src/builders/build_opencomposite.rs | 6 ++-- src/builders/build_openhmd.rs | 6 ++-- src/builders/build_wivrn.rs | 6 ++-- 7 files changed, 36 insertions(+), 44 deletions(-) diff --git a/src/build_tools/git.rs b/src/build_tools/git.rs index c7552d3..4593e8e 100644 --- a/src/build_tools/git.rs +++ b/src/build_tools/git.rs @@ -12,6 +12,12 @@ pub struct Git { } impl Git { + fn cmd(&self, args: Vec) -> WorkerJob { + let mut nargs = vec!["-C".into(), self.dir.clone()]; + nargs.extend(args); + WorkerJob::new_cmd(None, "git".into(), Some(nargs)) + } + fn get_repo(&self) -> String { self.repo .split('#') @@ -27,16 +33,7 @@ impl Git { } pub fn get_reset_job(&self) -> WorkerJob { - WorkerJob::new_cmd( - None, - "git".into(), - Some(vec![ - "-C".into(), - self.dir.clone(), - "reset".into(), - "--hard".into(), - ]), - ) + self.cmd(vec!["reset".into(), "--hard".into()]) } pub fn get_override_remote_url_job(&self) -> WorkerJob { @@ -75,12 +72,13 @@ impl Git { })) } - pub fn get_pull_job(&self) -> WorkerJob { - WorkerJob::new_cmd( - None, - "git".into(), - Some(vec!["-C".into(), self.dir.clone(), "pull".into()]), - ) + pub fn get_pull_jobs(&self) -> Vec { + let mut res = vec![self.cmd(vec!["fetch".into()])]; + if let Some(checkout_j) = self.get_checkout_ref_job() { + res.push(checkout_j); + } + res.push(self.cmd(vec!["merge".into()])); + res } pub fn get_clone_job(&self) -> WorkerJob { @@ -97,13 +95,7 @@ impl Git { } pub fn get_checkout_ref_job(&self) -> Option { - self.get_ref().map(|r| { - WorkerJob::new_cmd( - None, - "git".into(), - Some(vec!["-C".into(), self.dir.clone(), "checkout".into(), r]), - ) - }) + self.get_ref().map(|r| self.cmd(vec!["checkout".into(), r])) } pub fn get_clone_or_not_job(&self) -> Option { @@ -115,11 +107,11 @@ impl Git { Some(self.get_clone_job()) } - pub fn get_clone_or_pull_job(&self, profile: &Profile) -> Option { + pub fn get_clone_or_pull_jobs(&self, profile: &Profile) -> Option> { match self.get_clone_or_not_job() { - Some(j) => Some(j), + Some(j) => Some(vec![j]), None => match profile.pull_on_build { - true => Some(self.get_pull_job()), + true => Some(self.get_pull_jobs().into()), false => None, }, } diff --git a/src/builders/build_basalt.rs b/src/builders/build_basalt.rs index 6a6c535..93abb00 100644 --- a/src/builders/build_basalt.rs +++ b/src/builders/build_basalt.rs @@ -22,14 +22,14 @@ pub fn get_build_basalt_jobs(profile: &Profile, clean_build: bool) -> VecDeque VecDeq jobs.push_back(git.get_override_remote_url_job()); - git.get_clone_or_pull_job(profile).map(|j| { - jobs.push_back(j); + git.get_clone_or_pull_jobs(profile).map(|j| { + jobs.extend(j); }); git.get_checkout_ref_job().map(|j| { jobs.push_back(j); if profile.pull_on_build { - jobs.push_back(git.get_pull_job()); + jobs.extend(git.get_pull_jobs()); } }); diff --git a/src/builders/build_monado.rs b/src/builders/build_monado.rs index b0ba80a..58e09f5 100644 --- a/src/builders/build_monado.rs +++ b/src/builders/build_monado.rs @@ -25,14 +25,14 @@ pub fn get_build_monado_jobs( }; jobs.push_back(git.get_override_remote_url_job()); - git.get_clone_or_pull_job(profile).map(|j| { - jobs.push_back(j); + git.get_clone_or_pull_jobs(profile).map(|j| { + jobs.extend(j); }); git.get_checkout_ref_job().map(|j| { jobs.push_back(j); if profile.pull_on_build { - jobs.push_back(git.get_pull_job()); + jobs.extend(git.get_pull_jobs()); } }); diff --git a/src/builders/build_opencomposite.rs b/src/builders/build_opencomposite.rs index 1ab5c91..be000df 100644 --- a/src/builders/build_opencomposite.rs +++ b/src/builders/build_opencomposite.rs @@ -22,14 +22,14 @@ pub fn get_build_opencomposite_jobs(profile: &Profile, clean_build: bool) -> Vec jobs.push_back(git.get_override_remote_url_job()); - git.get_clone_or_pull_job(profile).map(|j| { - jobs.push_back(j); + git.get_clone_or_pull_jobs(profile).map(|j| { + jobs.extend(j); }); git.get_checkout_ref_job().map(|j| { jobs.push_back(j); if profile.pull_on_build { - jobs.push_back(git.get_pull_job()); + jobs.extend(git.get_pull_jobs()); } }); diff --git a/src/builders/build_openhmd.rs b/src/builders/build_openhmd.rs index cdc7a4e..e198aa2 100644 --- a/src/builders/build_openhmd.rs +++ b/src/builders/build_openhmd.rs @@ -22,14 +22,14 @@ pub fn get_build_openhmd_jobs(profile: &Profile, clean_build: bool) -> VecDeque< jobs.push_back(git.get_override_remote_url_job()); - git.get_clone_or_pull_job(profile).map(|j| { - jobs.push_back(j); + git.get_clone_or_pull_jobs(profile).map(|j| { + jobs.extend(j); }); git.get_checkout_ref_job().map(|j| { jobs.push_back(j); if profile.pull_on_build { - jobs.push_back(git.get_pull_job()); + jobs.extend(git.get_pull_jobs()); } }); diff --git a/src/builders/build_wivrn.rs b/src/builders/build_wivrn.rs index f974d8f..f626646 100644 --- a/src/builders/build_wivrn.rs +++ b/src/builders/build_wivrn.rs @@ -26,14 +26,14 @@ pub fn get_build_wivrn_jobs( jobs.push_back(git.get_override_remote_url_job()); - git.get_clone_or_pull_job(profile).map(|j| { - jobs.push_back(j); + git.get_clone_or_pull_jobs(profile).map(|j| { + jobs.extend(j); }); git.get_checkout_ref_job().map(|j| { jobs.push_back(j); if profile.pull_on_build { - jobs.push_back(git.get_pull_job()); + jobs.extend(git.get_pull_jobs()); } });