当前位置: 首页 > 工具软件 > LibGit2Sharp > 使用案例 >

LibGit2Sharp 应用

松德曜
2023-12-01

LibGit2Sharp简介

LibGit2Sharp 将libgit2(本机Git实现)的所有可能性和速度带到了.NET和Mono的托管世界。

先决条件


  • Windows: .NET 4.6.1+
  • Linux / Mac OS X: Mono 5.4+

在线资源




注:我项目应用的LibGitSharp版本为0.27.0.0



clone操作


不需要用户密码

private void YJW_clone()
{
    Repository.Clone("https://xxx/yangjw/123.git", "path");
}

需要用户密码

private void YJW_clone()
{

    var co = new CloneOptions();
    co.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { Username = "YangJiaWei_Username", Password = "YangJiaWei_Password " };
    string logMessage = Repository.Clone("http://xxx/yangjw/123.git", "daobanmojie", co);
    Console.WriteLine(logMessage);
}


fetch操作


不需要用户密码

private void YJW_fetch()
{
    string logMessage = "";
    using (var repo = new Repository("daobanmojie"))
    {
        var remote = repo.Network.Remotes["origin"];
        var refSpecs = remote.FetchRefSpecs.Select(x => x.Specification);
        Commands.Fetch(repo, remote.Name, refSpecs, null, logMessage);
    }
    Console.WriteLine(logMessage);

不需要用户密码

private void YJW_fetch()
{
    using (var repo = new Repository("daobanmojie"))
    {
        FetchOptions options = new FetchOptions();
        options.CredentialsProvider = new CredentialsHandler((url, usernameFromUrl, types) =>
            new UsernamePasswordCredentials()
            {
                Username = "YangJiaWei_Username",
                Password = "YangJiaWei_Password "
            });

        foreach (Remote remote in repo.Network.Remotes)
        {
            IEnumerable<string> refSpecs = remote.FetchRefSpecs.Select(x => x.Specification);
            Commands.Fetch(repo, remote.Name, refSpecs, options, logMessage);
        }
    }
    Console.WriteLine(logMessage);
}
 类似资料: