LibGit2Sharp и TFS Git хранилище

Я клонировал:

https://github.com/libgit2/libgit2sharp

который, как я понимаю, является git-клиентом, используемым в TFS 2015. Я пытаюсь запустить тест:

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

В:

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

Где я обновил его, чтобы использовать репозиторий Git, который у меня есть в TFS:

    [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

Я подтвердил, что могу использовать предоставленные выше имя пользователя и пароль для клонирования хранилища из командной строки, используя: https://git-scm.com/

Есть идеи, как запустить тесты libgit2sharp в репозитории TFS 2015 Git?

1 ответ

Решение

DefaultCredentials type - это то, что вам нужно, поскольку TFS git протокол не использует имя пользователя и пароль для аутентификации.

Как указано в документации xml, это "объект учетных данных, который предоставит учетные данные" по умолчанию "(информация о пользователях, вошедших в систему) через проверку подлинности NTLM или SPNEGO".

Настройки CloneOptions.CredentialsProvider к следующему следует сделать свое дело

CredentialsProvider = (_url, _user, _cred) => new DefaultCredentials()
Другие вопросы по тегам