git2go获取远程标签

时间:2014-10-20 13:25:06

标签: git go libgit2

我尝试使用git2go(https://github.com/libgit2/git2go)从遥控器上获取标签。 当我克隆存储库时,我可以使用以下代码列出所有标记:

iter, err := repository.NewReferenceIterator()

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

    ref, err = iter.Next()
}

但是当我从遥控器获取代码时,它不会更新标签。 我从存储库中获取新代码:

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

我已添加(Can I specify in .git/config to fetch multiple refspecs?):

fetch = refs/tags/*:refs/tags/*

但这没有任何作用。

我还在refspec中添加了标签但是给出了错误:ref'refs / remotes / origin / master'与目的地不匹配

1 个答案:

答案 0 :(得分:2)

Remote.Fetch()方法的文档提到:

  

使用空列表来使用配置中的refspec。

default refspec does not import tags (即使是常规的git,you would need a git fetch --tags) 默认情况下:

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

你可以:


gyre报告in the commentsthis code正在努力:

  

直到我需要PEEL标签:Peel是git2go以某种方式返回错误的地方,它不能将引用剥离到标签中。