git-api 0.1.1

git2-rs based utility library
Documentation
mod common;

use common::*;

/*
   列出远程 Git 仓库的引用(refs)
   $ git ls-remote https://github.com/open-rust/macro-log
   84aef338c2d6a27382a75706dae7b5125852fca2        HEAD
   6e2cdbe205bbf7f4a70e03f8a06b603c9e8f9888        refs/heads/develon2015-patch-1
   84aef338c2d6a27382a75706dae7b5125852fca2        refs/heads/main
   6e2cdbe205bbf7f4a70e03f8a06b603c9e8f9888        refs/pull/1/head
*/

use git2::{Error, Remote};
use git_api::auth_callbacks;

#[test]
fn test() -> Result<(), Error> {
    let repo_url = format!("http://{USERNAME}@{DOMAIN}/{REPO}"); // 远程仓库地址

    let callbacks = auth_callbacks(USERNAME, PASSWORD);

    let mut remote = Remote::create_detached(repo_url)?; // Create a remote with the given URL in-memory
    // Open a connection to a remote with callbacks and proxy settings
    remote.connect_auth(git2::Direction::Fetch, Some(callbacks), None)?;
    // Open a connection to a remote.
    // remote.connect(git2::Direction::Fetch)?;

    // Get the remote repository's reference advertisement list.
    for head in remote.list()? {
        let ref_name = head.name();
        let oid = head.oid();
        let symref_target = head.symref_target();

        if let Some(target) = symref_target {
            println!("{} -> {} (symbolic ref)", ref_name, target);
        } else {
            println!("{} -> {}", ref_name, oid);
        }
    }
    Ok(())
}