aboutsummaryrefslogtreecommitdiffstats
path: root/src/git.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git.rs')
-rw-r--r--src/git.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/git.rs b/src/git.rs
new file mode 100644
index 0000000..d58da3c
--- /dev/null
+++ b/src/git.rs
@@ -0,0 +1,32 @@
+use std::path::Path;
+
+
+pub fn mirror() -> Result<(), Box<dyn std::error::Error>> {
+ // let builder = git2::build::RepoBuilder::new()
+ // .bare(true)
+ // .clone(
+ // "https://github.com/teddywing/google-calendar-rsvp.git",
+ // Path::new("/tmp/grsvp"),
+ // );
+
+ let repo = git2::Repository::init_bare(Path::new("/tmp/grsvp"))?;
+
+ let remote_name = "origin";
+
+ let mut remote = repo.remote_with_fetch(
+ remote_name,
+ "https://github.com/teddywing/google-calendar-rsvp.git",
+ "+refs/*:refs/*",
+ )?;
+
+ let mut config = repo.config()?;
+ config.set_bool(
+ &format!("remote.{}.mirror", remote_name),
+ true,
+ )?;
+
+ let refspecs: [&str; 0] = [];
+ remote.fetch(&refspecs, None, None)?;
+
+ Ok(())
+}