22 releases (12 breaking)
0.13.0 | Sep 3, 2023 |
---|---|
0.12.0 | Aug 22, 2023 |
0.11.0 | Mar 5, 2023 |
0.9.1 | Sep 11, 2022 |
0.3.0 | Jul 9, 2019 |
#228 in Authentication
1,139 downloads per month
Used in 18 crates
(15 directly)
31KB
515 lines
git2_credentials
Provide credentials function to used with git2::RemoteCallbacks.credentials
Usage
use git2;
use git2_credentials::CredentialHandler;
use tempfile;
let mut cb = git2::RemoteCallbacks::new();
let git_config = git2::Config::open_default().unwrap();
let mut ch = CredentialHandler::new(git_config);
cb.credentials(move |url, username, allowed| ch.try_next_credential(url, username, allowed));
// clone a repository
let mut fo = git2::FetchOptions::new();
fo.remote_callbacks(cb)
.download_tags(git2::AutotagOption::All)
.update_fetchhead(true);
let dst = tempfile::tempdir().unwrap();
std::fs::create_dir_all(&dst.as_ref()).unwrap();
git2::build::RepoBuilder::new()
.branch("master")
.fetch_options(fo)
.clone("git@github.com:davidB/git2_credentials.git", dst.as_ref()).unwrap();
You can run the example via
cargo run --example clone -- --nocapture
You can provide custom UI (to ask password, passphrase) by providing a CredentialUI
. A default implementation (with dialoguer is provided.
Build
cargo make ci-flow
Credit
Code extracted from:
- cargo/utils.rs at master · rust-lang/cargo (search
with_authentication
)Cargo, a package manager for Rust.
- ffizer
ffizer is a files and folders initializer / generator. Create any kind (or part) of project from template.
- gpm/ssh.rs at master · aerys/gpm
Git-based package manager.
Links
Dependencies
~12–22MB
~378K SLoC