libgit2sharp:替换"git pull"命令



我想用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;
    }
}

最新更新