aboutsummaryrefslogtreecommitdiff
path: root/src/git/mod.rs
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
commitf869c7f52d8fd1f1ef61e218bbec4d0dac27673d (patch)
tree8029b33976fc897a4ae81785e622a7e61ad2eb67 /src/git/mod.rs
init
Diffstat (limited to 'src/git/mod.rs')
-rw-r--r--src/git/mod.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/git/mod.rs b/src/git/mod.rs
new file mode 100644
index 0000000..60d0b46
--- /dev/null
+++ b/src/git/mod.rs
@@ -0,0 +1,27 @@
+pub fn git_credentials_callback(
+ _user: &str,
+ user_from_url: Option<&str>,
+ _cred: git2::CredentialType,
+) -> Result<git2::Cred, git2::Error> {
+ if let Some(user) = user_from_url {
+ git2::Cred::ssh_key_from_agent(user)
+ } else {
+ Err(git2::Error::from_str("no url username found"))
+ }
+}
+
+pub fn callbacks<'g>() -> git2::RemoteCallbacks<'g> {
+ let mut callbacks = git2::RemoteCallbacks::new();
+ callbacks.credentials(git_credentials_callback);
+
+ callbacks
+}
+
+#[tracing::instrument(level = "trace")]
+pub fn fetch_options<'g>() -> git2::FetchOptions<'g> {
+ let mut opts = git2::FetchOptions::new();
+ opts.remote_callbacks(callbacks());
+ opts.download_tags(git2::AutotagOption::All);
+
+ opts
+}