如何在LibGit2Sharp中使用新的CredentialsProvider?

Gáb*_*kos 3 git github libgit2sharp

我通过以下方式使用LibGit2Sharp.Credentials类一段时间:

LibGit2Sharp.Credentials credentials = new UsernamePasswordCredentials()
{
       Username = TokenValue,
       Password = ""
};

var pushOptions = new PushOptions() { Credentials = credentials} ;
Run Code Online (Sandbox Code Playgroud)

现在LibGit2Sharp.PushOptions.Credentials是绝对的,我必须使用CredentialsProvider.

我想问你CredentialsProvider在这种情况下使用的正确方法是什么?

非常感谢你!

nul*_*ken 6

>我想问你在这种情况下使用CredentialsProvider的正确方法是什么?

这段代码应该符合您的需求.

var pushOptions = new PushOptions() { 
    CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials
    {
        Username = TokenValue,
        Password = ""
    }
}
Run Code Online (Sandbox Code Playgroud)

这是由PR#761引入的,以便允许一些更具交互性的场景(例如,当用户被要求将他的凭据作为克隆过程的一部分时)并为其他类型的凭证准备路径(例如,Ssh) ).

这CredentialsProvider是一个回调

  • 传递目标网址,用户名(如果在网址中指定)和服务器接受的凭据类型
  • 期望在Credentials验证期间使用的(基本类型)

可以CredentialsProviders在CloneFixture.cs测试套件中看到一个实例.