#git #credentials #git-repository #git2 #git-clone #password #remote-callbacks

git2_credentials

Provide credential function to used with git2::RemoteCallbacks.credentials

23 releases (13 breaking)

new 0.14.0 Nov 17, 2024
0.13.0 Sep 3, 2023
0.12.1 Sep 3, 2023
0.11.0 Mar 5, 2023
0.3.0 Jul 9, 2019

#59 in Authentication

Download history 351/week @ 2024-07-28 356/week @ 2024-08-04 354/week @ 2024-08-11 344/week @ 2024-08-18 295/week @ 2024-08-25 257/week @ 2024-09-01 355/week @ 2024-09-08 292/week @ 2024-09-15 285/week @ 2024-09-22 225/week @ 2024-09-29 148/week @ 2024-10-06 143/week @ 2024-10-13 142/week @ 2024-10-20 271/week @ 2024-10-27 682/week @ 2024-11-03 73/week @ 2024-11-10

1,176 downloads per month
Used in 18 crates (15 directly)

Apache-2.0

31KB
515 lines

git2_credentials

crate license crate version

Actions Status

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:

Dependencies

~13–23MB
~386K SLoC