我尝试使用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'与目的地不匹配
答案 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/*
你可以:
在Fetch()
方法中使用非空的refspec列表,
[]string{"+refs/heads/*:refs/remotes/origin/*", "refs/tags/*:refs/tags/*"}
或者可以add multiple refspec to a fetch config使用(使用git2go)(o *Remote) FetchRefspecs() ([]string, error)
method。
gyre报告in the comments让this code正在努力:
直到我需要PEEL标签:Peel是
git2go
以某种方式返回错误的地方,它不能将引用剥离到标签中。