git2go获取远程标记

git2go获取远程标记,git,go,libgit2,Git,Go,Libgit2,我正试图用git2go()从远程设备获取标签。 克隆存储库时,我可以使用以下代码列出所有标记: iter, err := repository.NewReferenceIterator() ref, err := iter.Next() for err == nil { if ref.IsTag() { fmt.Println(ref.Name()) } ref, err = iter.Next() } 但是当我从远程获取代码时,它不会更新标记。 I

我正试图用git2go()从远程设备获取标签。 克隆存储库时,我可以使用以下代码列出所有标记:

iter, err := repository.NewReferenceIterator()

ref, err := iter.Next()
for err == nil {
    if ref.IsTag() {
        fmt.Println(ref.Name())
    }

    ref, err = iter.Next()
}
但是当我从远程获取代码时,它不会更新标记。 Im正在从存储库中获取新代码,其中包含:

remote, err := p.repository.LoadRemote("origin")
remote.Fetch([]string{}, nil, "")
这是我的配置:

[core]
    bare = false
    repositoryformatversion = 0
    filemode = true
    logallrefupdates = true
[remote "origin"]
    url = file:///home/testrepo

    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
我添加了()

但这没有任何作用

我还在refspec中添加了标记,但这导致了错误:ref'refs/remotes/origin/master'与目标不匹配

方法的文档提到:

使用空列表可使用配置中的参照规范


(即使使用常规git,)。
默认情况下:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
您可以:

  • Fetch()
    方法中使用非空的refspec列表

    []string{"+refs/heads/*:refs/remotes/origin/*", "refs/tags/*:refs/tags/*"}
    
  • 或者也可以使用(与git2go一起)的


报告工作到某一点:

直到我需要剥离标记的地方:剥离是指
git2go
以某种方式返回错误,无法将引用剥离到标记中


谢谢你迄今为止的帮助。我阅读了您传递的链接,但似乎无法设置正确的refspec:我应该在这里输入什么?我使用remote.Fetch([]字符串{“refs/tags/*:refs/tags/*”},nil,”),但这给了我一个错误:“refs/remotes/origin/master”与目标不匹配。@user1979738
“+refs/heads/*:refs/remotes/origin/*”,“refs/tags/*:refs/tags/*”
。我已编辑了答案。仍然收到错误:ref'refs/remotes/origin/master'与目标不匹配。我已经添加了克隆的repo配置,但它看起来确实与这些refspec相同。@user1979738您可以尝试一下,只是检查一下,
“+refs/heads/*:refs/heads/*”,“refs/tags/*:refs/tags/*”
?这也可能意味着远程“origin”没有正确定义。它仍然给我相同的信息:“refs/remotes/origin/master”与目标不匹配。
[]string{"+refs/heads/*:refs/remotes/origin/*", "refs/tags/*:refs/tags/*"}