我想用labgit2sharp来替换命令——"git pull"从我的gitlab中提取我的代码。 但是使用以下代码并不成功:
using (var repo = new Repository(remotePath))
{
LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
options.FetchOptions = new FetchOptions();
options.FetchOptions.CredentialsProvider = new CredentialsHandler(
(url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username = "username",
Password = "password"
});
repo.Network.Pull(new LibGit2Sharp.Signature("username", emailaddress, new DateTimeOffset(DateTime.Now)), options)
}
你能帮我吗?我想知道从一开始就知道所有步骤。非常感谢!
Network.Pull 不再使用。请尝试使用 LibGit2Sharp.Command.Pull()
@wonko-the-sane 以下是Commands.Pull
用法的简单示例:
var Username = "name";
var Password = "pass";
var creds = new UsernamePasswordCredentials()
{
Username = Username,
Password = Password
};
_credentialsHandler = (_url, _user, _cred) => creds;
var projectRepositoryPath = "D:local_repo";
var repositoryOptions = new RepositoryOptions { WorkingDirectoryPath = projectRepositoryPath};
var fetchOptions = new FetchOptions { CredentialsProvider = _credentialsHandler, };
var mergeOptions = new MergeOptions { FailOnConflict=true,IgnoreWhitespaceChange=true };
var pullOptions = new PullOptions() { FetchOptions = fetchOptions, MergeOptions = mergeOptions };
using (var repo = new Repository(projectRepositoryPath, repositoryOptions))
{
var signature = new Signature("guest", "guest", DateTimeOffset.Now);
var result = Commands.Pull(repo, signature, pullOptions);
}
这是我为
公共存储库拉取的工作代码(LibGit2Sharp v. 0.26.2):
using LibGit2Sharp;
...
public static bool Pull(string repositoryPath)
{
try
{
using Repository localRepo = new Repository(repositoryPath);
PullOptions pullOptions = new PullOptions();
pullOptions.FetchOptions = new FetchOptions();
Commands.Pull(localRepo, new Signature("username", "<your email>", new DateTimeOffset(DateTime.Now)), pullOptions);
return true;
}
catch (Exception ex)
{
StaticObjects.FireShowExceptionMessage($"Pull Error, repository= {repositoryPath}: ", ex);
return false;
}
}