如何使用 libgit2sharp 提取所有新标签
How to pull all new tags using libgit2sharp
我想用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)
有什么想法吗?
很遗憾,我在最新的官方gitdocumentation.
中找不到任何--tags
选项
但是,在 LibGit2Sharp 中,您可以使用以下代码(或其他 .Fetch()
重载之一)执行等效的 git fetch --all
:
repo.Network.Fetch(remote, new FetchOptions { TagFetchMode = TagFetchMode.All });
更新
LibGit2Sharp vNext
分支的当前提示并不畏惧此代码。但是,正如您提出的 issue 中所见,版本 v0.20.x 确实会抛出。
v0.21 将解决此问题。
我想用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)
有什么想法吗?
很遗憾,我在最新的官方gitdocumentation.
中找不到任何--tags
选项
但是,在 LibGit2Sharp 中,您可以使用以下代码(或其他 .Fetch()
重载之一)执行等效的 git fetch --all
:
repo.Network.Fetch(remote, new FetchOptions { TagFetchMode = TagFetchMode.All });
更新
LibGit2Sharp vNext
分支的当前提示并不畏惧此代码。但是,正如您提出的 issue 中所见,版本 v0.20.x 确实会抛出。
v0.21 将解决此问题。