J'essaie de récupérer les tags d'une télécommande avec git2go (https://github.com/libgit2/git2go). Lorsque je clone le référentiel, je peux répertorier toutes les balises avec le code suivant:
iter, err := repository.NewReferenceIterator()
ref, err := iter.Next()
for err == nil {
if ref.IsTag() {
fmt.Println(ref.Name())
}
ref, err = iter.Next()
}
Mais quand je récupère le code de la télécommande, il ne met pas à jour les balises. Je récupère le nouveau code du référentiel avec:
remote, err := p.repository.LoadRemote("origin")
remote.Fetch([]string{}, nil, "")
Ceci est ma config:
[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
J'ai ajouté(Puis-je spécifier dans .git / config pour récupérer plusieurs refspecs?):
fetch = refs/tags/*:refs/tags/*
Mais ça ne fait rien.
J'ai aussi ajouté les tags dans la refspec mais cela a donné l'erreur: ref "refs / remotes / origin / master" ne correspond pas à la destination
Réponses:
2 pour la réponse № 1Le doc du Remote.Fetch () la méthode mentionne:
utilisez une liste vide pour utiliser les refspecs de la configuration.
le refspec par défaut n'importe pas les balises.
(Même avec git régulier, vous auriez besoin d'un git fetch --tags
).
Par défaut:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
Tu peux soit:
utiliser une liste non vide de refspecs dans le
Fetch()
méthode,[]string{"+refs/heads/*:refs/remotes/origin/*", "refs/tags/*:refs/tags/*"}
ou il est possible de ajouter plusieurs refspec à une configuration de récupération cependant, en utilisant (avec git2go) le
(o *Remote) FetchRefspecs() ([]string, error)
méthode.
gyre rapports dans les commentaires ayant ce code travailler jusqu'à un certain point:
jusqu'au point où j'ai besoin de peindre l'étiquette: Peel est où
git2go
retourne en quelque sorte des erreurs qu'il ne "peut pas décoller la référence dans la balise.