几天来我一直在兜圈子,我正在尝试实现一个“拉”命令,我知道 libgit2sharp 没有直接实现。我知道我必须从远程获取然后合并它。我想出了以下代码:
this._repo = new Repository(workingDir);
Credentials credentials = new Credentials() {Username = this._username, Password = this._password};
Remote remote = this._repo.Network.Remotes["origin"];
FetchOptions fetchOptions = new FetchOptions();
fetchOptions.Credentials = credentials;
var branch = @"refs/heads/TestBranch:refs/remotes/origin/TestBranch";
this._repo.Network.Fetch(remote, new string[] { branch }, fetchOptions);
//this._repo.Fetch(this._repo.Head.Name);
//this._repo.Fetch(remote.Name, fetchOptions);
//this._repo.Network.Fetch(remote, fetchOptions); //this._repo.Network.Remotes["origin"], new FetchOptions() { Credentials = new Credentials() { Password = this._password, Username = this._username }});
我在评论中留下了我尝试过的所有其他 Fetch 变体 - 但无论我尝试什么,我总是得到同样的错误:
An error was raised by libgit2. Category = NoMemory (User).
Out of memory
我唯一一次没有得到这个错误是当我没有输入我的凭据并且我得到一个 401 返回码时。
这是通过 HTTPS 使用远程 BitBucket 帐户,我发现 1 个与 BitBucket 类似的问题与remote
条目中的用户名有关,但这应该是修复的,但当我删除用户名时仍然无法正常工作。