这是我用来获取的代码:
public static void GitFetch()
{
var creds = new UsernamePasswordCredentials()
{Username = "user",
Password = "pass"};
var fetchOpts = new FetchOptions {Credentials = creds};
using (repo = new Repository(@"C:\project");)
{
repo.Network.Fetch(repo.Network.Remotes["origin"], fetchOpts);
}
}
但是在获取过程中失败,但有以下异常:
LibGit2Sharp.LibGit2SharpException: Too many redirects or authentication replays
Result StackTrace:
at LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
at LibGit2Sharp.Core.Proxy.git_remote_fetch(RemoteSafeHandle remote, Signature signature, String logMessage)
at LibGit2Sharp.Network.DoFetch(RemoteSafeHandle remoteHandle, FetchOptions options, Signature signature, String logMessage)
at LibGit2Sharp.Network.Fetch(Remote remote, FetchOptions options, Signature signature, String logMessage)
我已验证配置文件具有必需的远程名称,并且git fetch可从命令行运行。我发现异常起源于libgit2\src\transport\winhttp.c
但我无法提出解决方法/解决方案。
我通过以下方式尝试了@Carlos的建议:
public static void GitFetch()
{
var creds = new UsernamePasswordCredentials()
{Username = "user",
Password = "pass"};
CredentialsHandler credHandler = (_url, _user, _cred) => creds;
var fetchOpts = new FetchOptions { CredentialsProvider = credHandler };
using (repo = new Repository(@"C:\project");)
{
repo.Network.Fetch(repo.Network.Remotes["origin"], fetchOpts);
}
}
我可以从github上的公共仓库以及bitbucket上受密码保护的私人仓库中获取信息。但是,我无法在工作中对通过LAN托管的存储库执行相同的操作。事实证明,它们是以不接受UsernamePasswordCredentials
libgit2sharp提供的方式进行配置的。以下修改使我可以通过LAN从存储库中获取:
CredentialsHandler credHandler = (_url, _user, _cred) => new DefaultCredentials();
(我试图找出两者之间的确切区别是什么;如果对此有进一步的了解,我将更新答案。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句