libgit2sharp - 如何 Git 获取使用 libgit2sharp?
问题描述
我现有的 Fetch 方法如下所示。
public void Fetch(string remote) => CommandLine.Run($"git fetch {remote}", _repoFolder);
我想使用 libgit2sharp 实现相同的功能。
这就是我想出的:
public void Fetch(string remote)
{
var repo = new Repository(_folder);
var options = new FetchOptions();
options.Prune = true;
options.TagFetchMode = TagFetchMode.Auto;
var refSpecs = $"+refs/heads/*:refs/remotes/{remote}/*";
Commands.Fetch(repo, remote, new [] {refSpecs}, options, "Fetching remote");
}
但是,这会失败并显示以下错误消息:
System.InvalidOperationException: 'authentication cancelled'
我也尝试过使用 libgit2sharp-ssh 包,结果是错误代码 401(未经授权的客户端)。
我认为 git 命令行工具可以工作,因为它知道如何授权访问(因为已经有一个遥控器)。如何使用 libgit2sharp 实现相同的目标?
解决方案
你有没有尝试过类似的东西
using(var repo = new Repository(_folder))
{
var options = new FetchOptions();
options.Prune = true;
options.TagFetchMode = TagFetchMode.Auto;
options.CredentialsProvider = new CredentialsHandler(
(url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username = "username",
Password = "password"
});
var remote = repo.Network.Remotes["origin"];
var msg = "Fetching remote";
var refSpecs = remote.FetchRefSpecs.Select(x => x.Specification);
Commands.Fetch(repo, remote.Name, refSpecs, options, msg);
}
推荐阅读
- c++ - qt中的弹出小部件
- python - 使用异步队列时如何修补类实例方法
- c++ - 帕斯卡三角失败超过第 14 行
- javascript - AdminBro 中文件上传的自定义提供程序问题
- excel - MS Excel 宏:根据单元格值插入 x 行
- javascript - 随机生成器工具中的重复项
- flutter - Flutter:我怎样才能将我最后的最后一个 ..shuffle 订单保持在新的状态?
- javascript - 通过数组nodejs映射
- java - 如何让 JTextField 在 SQLite Select 语句中工作?
- r - Mac OS Big Sur R 编译错误:ld: framework not found CoreFoundation