简体   繁体   English

LibGit2Sharp和TFS Git存储库

[英]LibGit2Sharp and TFS Git repository

I have cloned: 我已经克隆了:

https://github.com/libgit2/libgit2sharp https://github.com/libgit2/libgit2sharp

which as I understand is the git client used in TFS 2015. I am trying to run the test: 据我了解,这是TFS 2015中使用的git客户端。我正在尝试运行测试:

   public void CanCloneFromBBWithCredentials(string url, string user, string pass, bool secure)

In: 在:

https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp.Tests/CloneFixture.cs https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp.Tests/CloneFixture.cs

Where I have updated it to use a Git repository I have in TFS: 我将其更新为使用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))

But when I run the test I get the following exception: 但是,当我运行测试时,出现以下异常:

   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

I have verified that I can use the userName and password provided above to clone the repository from command line using: https://git-scm.com/ 我已经验证可以使用上面提供的用户名和密码通过以下命令从命令行克隆存储库: https : //git-scm.com/

Any ideas on how to run libgit2sharp tests against a TFS 2015 Git repository? 关于如何对TFS 2015 Git存储库运行libgit2sharp测试的任何想法?

DefaultCredentials type is what you're after as TFS git protocol doesn't rely on username and password for authentication. 您需要使用DefaultCredentials类型,因为TFS git协议不依赖用户名和密码进行身份验证。

As stated by the xml documentation , it's "A credential object that will provide the "default" credentials (logged-in user information) via NTLM or SPNEGO authentication." xml文档所述 ,它是“一个凭据对象,它将通过NTLM或SPNEGO身份验证提供”默认”凭据(登录的用户信息)。

Settings the CloneOptions.CredentialsProvider to the following should do the trick CloneOptions.CredentialsProvider设置为以下应该可以解决问题

CredentialsProvider = (_url, _user, _cred) => new DefaultCredentials()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM