diff --git a/bin/pudoxd/src/session.rs b/bin/pudoxd/src/session.rs index 9d96067..155d612 100644 --- a/bin/pudoxd/src/session.rs +++ b/bin/pudoxd/src/session.rs @@ -141,8 +141,19 @@ async fn init( let dir_path = dir.clone(); let url = repo_url.clone(); - let clone_result = - tokio::task::spawn_blocking(move || git2::Repository::clone(&url, &dir_path)).await; + let token = std::env::var("GITHUB_TOKEN").unwrap_or_default(); + let clone_result = tokio::task::spawn_blocking(move || { + let mut callbacks = git2::RemoteCallbacks::new(); + callbacks.credentials(move |_url, _username, _allowed| { + git2::Cred::userpass_plaintext("x-access-token", &token) + }); + let mut fetch_opts = git2::FetchOptions::new(); + fetch_opts.remote_callbacks(callbacks); + let mut builder = git2::build::RepoBuilder::new(); + builder.fetch_options(fetch_opts); + builder.clone(&url, &dir_path) + }) + .await; match clone_result { Ok(Ok(_)) => tracing::info!("Cloned {} for session {}", repo_url, session_id),