我很难用libgit2sharp将我的提交推送到远程存储库。使用git bash它可以正常工作。
遥控器通过UNC解决,如“//computer_name/remote.git”。因此,它是本地网络中具有可访问文件夹的计算机上的文件夹。
使用libgit2sharp将其克隆到本地仓库工作得很好,构建远程也是成功的
Remote remote = localrepo.Network.Remotes["origin"];
现在,当我尝试使用以下方式推送遥控器时:
localrepo.Network.Push(remote, "HEAD", "origin");
我在Proxy.cs中的git_push_add_refspec()中得到了异常
An error was raised by libgit2. Category = Invalid (Error).
Not a valid reference 'origin'
然后我尝试了:
repo.Network.Push(remote, "HEAD", @"refs/remotes/origin/master");
并在Proxy.cs
中的git_push_finish()中获得异常An error was raised by libgit2. Category = Net (Error).
Remote transport doesn't support push.
是否有正确的方法来执行此操作,或者我的用例是否存在支持问题? 提前谢谢!
[UPDATE]
现在我的命令看起来像这样
repo.Network.Push(remote, "HEAD", @"refs/remote/origin/master", pushStErrHnd, null);
PushStatusErrorHandler
只有一行代码,应该将PushErrorStatus
写入控制台。但控制台仍为空白,然后发生上述异常。
[更新2]
当我遇到上述情况时,静态变量Repository.Version为0.9.5。
答案 0 :(得分:2)
正如nulltoken已经提到的那样,最近刚刚添加了本地推送。你需要确保你有一个最近的LibGit2Sharp版本(你需要包含提交547a6bd的LibGit2Sharp,于3月12日提交)
此外,API使用中存在轻微错误。目标引用应该是远程更新的引用(例如@“refs / remote / origin / master”应该是@“refs / heads / master”)。
答案 1 :(得分:1)
最近在libgit2中添加了推送到本地存储库(参见 PR #1406 )并最终嵌入到LibGit2Sharp中。但是,此功能尚未经过适当测试。
为了尝试和帮助您,请您使用以下几个问题的答案更新您的问题:
Push
接受其他参数以提供有关问题的更多信息:onPushStatusError
。您能否提供每个潜在PushStatusError
的输出?file://computer_name/remote.git
)会怎样?令人惊讶的 @yorah 正在使用 Pull Request 来增强有关您的方案的测试覆盖率。