【发布时间】:2015-01-30 09:32:11
【问题描述】:
我是 libgit2sharp 的新手(和一般的 git)。我正在尝试编写一个以统一方式处理多个存储库的小程序。但是,在尝试停用 SSL 验证时,我遇到了障碍。该库似乎没有提供一种简单的方法来做到这一点。我找到了一个分支(似乎可以解决问题)并从there复制了一些代码
我当前的代码如下所示(我已经删除了个人资料):
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", "me@company.de", 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)未授权。“}”服务器异常.如果没有其他代码,我会从服务器得到:“ {"user cancelled certificate check: "}"。
在调试完这件事后,在我看来,我的凭据的委托永远不会被调用(尽管在尝试使用任一操作时它已注册为回调)。我通过 Chrome 登录服务器并使用 TortoiseGit 提交,检查了用户名/密码是否正确。
目前我不确定 SSL 是否仍然是问题或其他问题。
有什么想法吗?如果我对问题不够具体,我会尝试提供更多信息(请询问)。
【问题讨论】:
-
您一直提到 SSL 是一个问题,但随后您说您的问题是您无法对服务器进行身份验证。由于这是两件完全不同的事情,您能否具体说明您目前遇到的问题是哪一件?
标签: libgit2 libgit2sharp