Я новичок в libgit2sharp (и в git вообще). Я пытаюсь написать небольшую программу, которая унифицированно обрабатывает несколько репозиториев. Однако я наткнулся на кирпичную стену, пытаясь отключить проверку SSL. Библиотека, похоже, не предоставляет простой способ сделать это. Я нашел ветку (которая, кажется, решает проблему) и скопировал некоторый код из здесь
Мой текущий код выглядит так (я удалил личные вещи"):
static void Main(string[] args)
{
//Additional code
RemoteCertificateValidationCallback certificateValidationCallback = (sender, certificate, chain, errors) => { return true; };
ServicePointManager.ServerCertificateValidationCallback = certificateValidationCallback;
GlobalSettings.RegisterSmartSubtransport<MockSmartSubtransport>("https");
//Additional code end
// Repository rep = new Repository(@"workingdirpath");
Repository.Clone("url.git", "workingdirpath", new CloneOptions
{
CredentialsProvider = new CredentialsHandler(getCredentials),
Checkout = true,
});
//Remote remote = rep.Network.Remotes.Add("master", "url.git");
//rep.Network.Pull(new Signature("me", "[email protected]", new DateTimeOffset(DateTime.Now.AddDays(-2))), new PullOptions
// {
// FetchOptions = new FetchOptions { CredentialsProvider = new CredentialsHandler(getCredentials), TagFetchMode = TagFetchMode.Auto },
// });
}
private static Credentials getCredentials(string url, string usernameFromUrl, SupportedCredentialTypes types)
{
return new UsernamePasswordCredentials
{
Username = "myaccount",
Password = "mypass",
};
}
Класс «MockSmartSubtransport» можно найти в связанной ветке.
Моя проблема в том, что код, кажется, работает (кажется, что он отключает проверку SSL), но я все еще получаю исключение "{"Удаленный сервер вернул ошибку: (401) Несанкционировано."}" исключение с сервера. Без дополнительного кода я получаю: "{"пользователь отменил проверку сертификата:"}" с сервера.
После отладки мне кажется, что делегат для моих учетных данных никогда не вызывается (хотя он регистрируется для обратного вызова при попытке выполнить любую из операций). Я проверил правильность имени пользователя/пароля, войдя на сервер через Chrome и выполнив коммит с TortoiseGit.
На данный момент я не уверен, что проблема все еще в SSL или в чем-то еще.
Любые идеи? Если я недостаточно конкретен в отношении проблемы, я постараюсь дать больше информации (пожалуйста, спросите).