我克隆了:
https://github.com/libgit2/libgit2sharp
据我所知,是TFS 2015中使用的git客户端。我正在尝试运行测试:
public void CanCloneFromBBWithCredentials(string url, string user, string pass, bool secure)
在:
https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp.Tests/CloneFixture.cs
我已经更新它以使用我在TFS中的Git存储库:
[Theory]
//[InlineData("https://libgit2@bitbucket.org/libgit2/testgitrepository.git", "libgit3", "libgit3", true)]
[InlineData("http://tfs/tfs/collection/project/_git/MyRepo", "myUser", "myPass", false)]
// [InlineData("http://tfs/tfs/collection/project/_git/MyRepo", "myUser", "myPass", true)]
public void CanCloneFromBBWithCredentials(string url, string user, string pass, bool secure)
{
var scd = BuildSelfCleaningDirectory();
string clonedRepoPath = Repository.Clone(url, scd.DirectoryPath, new CloneOptions()
{
CredentialsProvider = (_url, _user, _cred) => CreateUsernamePasswordCredentials (user, pass, secure)
});
using (var repo = new Repository(clonedRepoPath))
但是当我运行测试时,我得到以下异常:
at LibGit2Sharp.Core.Ensure.HandleError(Int32 result) in c:\tmp\Repos\libgit2sharp\LibGit2Sharp\Core\Ensure.cs:line 160
at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result) in c:\tmp\Repos\libgit2sharp\LibGit2Sharp\Core\Ensure.cs:line 178
at LibGit2Sharp.Core.Proxy.git_clone(String url, String workdir, GitCloneOptions& opts) in c:\tmp\Repos\libgit2sharp\LibGit2Sharp\Core\Proxy.cs:line 328
at LibGit2Sharp.Repository.Clone(String sourceUrl, String workdirPath, CloneOptions options) in c:\tmp\Repos\libgit2sharp\LibGit2Sharp\Repository.cs:line 694
at LibGit2Sharp.Tests.CloneFixture.CanCloneFromBBWithCredentials(String url, String user, String pass, Boolean secure) in c:\tmp\Repos\libgit2sharp\LibGit2Sharp.Tests\CloneFixture.cs:line 227
我已经验证我可以使用上面提供的userName和密码从命令行使用以下命令克隆存储库:https://git-scm.com/
关于如何针对TFS 2015 Git存储库运行libgit2sharp测试的任何想法?
答案 0 :(得分:1)
DefaultCredentials
类型就是您所需要的。
正如 xml documentation 所述,"一个凭据对象,它将提供"默认"凭证(登录用户信息)通过NTLM或SPNEGO身份验证。"
将CloneOptions.CredentialsProvider
设置为以下内容应该可以解决问题
CredentialsProvider = (_url, _user, _cred) => new DefaultCredentials()