aboutsummaryrefslogtreecommitdiff
path: root/src/sync
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2022-06-07 12:28:18 +0200
committerMaximilian Manz <maximilian.manz@de.clara.net>2022-06-20 11:33:04 +0200
commit012bf0593df7bf93afb73db5c87dd8ccc36e851f (patch)
tree7606ed25710a058012e8ffb8bda736bbfd6a1a3f /src/sync
parentreorganize file structure and cleanup lints (diff)
move to mostly sync architecture
the git repository struct is not sharable between threads, thus go single threaded for now and only call onto the tokio runtime for lookups towards gitlab.
Diffstat (limited to 'src/sync')
-rw-r--r--src/sync/mod.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/sync/mod.rs b/src/sync/mod.rs
index f707b04..271f672 100644
--- a/src/sync/mod.rs
+++ b/src/sync/mod.rs
@@ -3,8 +3,10 @@ use std::fmt::{Debug, Display};
use crate::repo::{Repo, RepoError, Repos};
impl crate::GTree {
- pub async fn sync(&self, repos: Repos) {
- for mut repo in repos {
+ pub fn sync(&self, repos: Repos) {
+ for (name, repo) in repos {
+ let mut repo = repo.write().unwrap();
+
match repo.sync() {
Ok(u) => println!("{}", u),
Err(u) => println!("{}", u),
@@ -30,7 +32,7 @@ impl Repo {
if self.repo.is_some() && self.forge.is_some() {
Ok(SyncResult::no_changes(repo_name))
} else if self.repo.is_some() {
- // do push stuff
+ // TODO do push stuff
Ok(SyncResult::pushed(repo_name))
} else if self.forge.is_some() {
let url = self
@@ -45,6 +47,9 @@ impl Repo {
.clone(url)
.map_err(|err| SyncResult::err(repo_name.clone(), err))?;
+ // TODO detect moved repos based on first commit
+ // ???? how to detect and not move forks?
+
self.repo = Some(repo);
Ok(SyncResult::cloned(repo_name))
} else {