我想使用libgit2sharp来实现git pull --tags
。
如果我试着这样拉:
repo.Network.Pull(new Signature("name", "my@email.com", new DateTimeOffset()), new PullOptions());
然后我得到了新的提交,但没有指向这些提交的新标签。
我尝试使用PullOptions
来修改这样的行为:
var sig = new Signature("name", "my@email.com", new DateTimeOffset());
var opts = new PullOptions{ FetchOptions = new FetchOptions {TagFetchMode = TagFetchMode.All} };
repo.Network.Pull(sig, opts);
这会引发以下异常:
LibGit2Sharp.LibGit2SharpException: ref 'refs/remotes/origin/master' doesn't match the destination
at LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result)
at LibGit2Sharp.Core.Proxy.git_remote_fetch(RemoteSafeHandle remote, Signature signature, String logMessage)
at LibGit2Sharp.Network.DoFetch(RemoteSafeHandle remoteHandle, FetchOptions options, Signature signature, String logMessage)
at LibGit2Sharp.Network.Fetch(Remote remote, FetchOptions options, Signature signature, String logMessage)
at LibGit2Sharp.Network.Pull(Signature merger, PullOptions options)
有什么想法吗?
答案 0 :(得分:0)
Stangely,我在最新官方git documentation 中找不到任何--tags
选项。
但是,在LibGit2Sharp中,您可以使用以下代码(或其他git fetch --all
重载之一)执行等效的.Fetch()
:
repo.Network.Fetch(remote, new FetchOptions { TagFetchMode = TagFetchMode.All });
LibGit2Sharp vNext
分支的当前提示不会受到此代码的影响。但是,正如您提出的 issue 所示,版本v0.20.x确实会抛出。
v0.21 将解决此问题。