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
私は追加しました(.git / configで複数のrefspecを取得するよう指定できますか?):
fetch = refs/tags/*:refs/tags/*
しかし、それは何もしません。
私もrefspecにタグを追加しましたが、それはエラーを出しました:ref "refs / remotes / origin / master"は宛先にマッチしません
回答:
回答№1は2のドキュメント Remote.Fetch() 方法に言及する:
空のリストを使用して、構成からのrefspecを使用します。
ザ デフォルトのrefspec タグはインポートされません.
(普通のgitでさえ、 あなたは git fetch --tags
)。
デフォルトでは:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
次のいずれかを実行できます。
refspecの空でないリストを
Fetch()
方法、[]string{"+refs/heads/*:refs/remotes/origin/*", "refs/tags/*:refs/tags/*"}
または可能性があります フェッチ設定に複数のrefspecを追加する しかし、(git2goを使って)
(o *Remote) FetchRefspecs() ([]string, error)
方法.
旋回 レポート コメントに 持つ このコード ポイントまで作業する:
私がタグを貼り付ける必要があるポイントまで:ピールはどこで
git2go
何らかの形でタグに参照を剥がすことができないエラーを返します。