J'essaye de compiler la base de données InfluxDB (version v0.8.8) en utilisant go get github.com/influxdb/influxdb
Mais cela tire la branche principale, et j'ai besoin de la v0.8.8
balise.
J'ai essayé de faire: go get github.com/influxdb/influxdb/releases/tag/v0.8.8
mais cela ne dit pas impossible de trouver.
J'ai également essayé de faire un régulier go get
de la branche principale, puis de vérifier manuellement l'étiquette à l'aide git
de GOPATH/src/github...
in afin de définir la version corret.
Le problème avec la dernière approche est que lorsque j'essaye d'extraire les dépendances avec go get -u -f ./...
elle essaie de les trouver dans la branche master, et certaines d'entre elles n'existent pas sur la branche master ...
TL; DR : exécutez go get
sur une balise github spécifique et tirez les dépendances correctes.
go get
, pas comment en créer une.Réponses:
Il n'est pas possible d'utiliser l'
go get
outil. Au lieu de cela, vous devez utiliser un outil de gestion de paquets go tiers ou créer vos propres fourchettes pour les paquets que vous souhaitez gérer plus finement.Parlé à un gars qui travaille chez Google et il a reconnu ce problème / exigence, il a dit que le fournisseur utilisé par son équipe était volumineux et qu'ils le résoudraient probablement bientôt avec les outils officiels.
Lire la suite:
Vendoring dans Go 1.6
Vendoring a été libéré de l'expérimental dans go 1.6 (après la rédaction initiale de cet article), ce qui facilite le processus d'utilisation de balises / versions spécifiques de packages à l'aide d'outils tiers.
go get
n'a toujours pas la fonctionnalité pour récupérer des balises ou des versions spécifiques.En savoir plus sur le fonctionnement de la vente: Comprendre et utiliser le dossier du fournisseur
Modules dans Go 1.11
Go 1.11 a publié des fonctionnalités expérimentales appelées modules pour améliorer la gestion des dépendances, ils espèrent le publier comme stable dans Go 1.12: Informations sur les modules de Go 1.11
la source
go mod
est disponible maintenant.Pour ceux qui ont besoin de construire un binaire d'une balise spécifique , voici ma manière:
mkdir temp cd temp go mod init . go get -d -v github.com/nsqio/nsq@v1.1.0 mkdir bin go build -o bin/nsqd.exe github.com/nsqio/nsq/apps/nsqd
Explication:
nsqd
.go mod init .
crée ungo.mod
fichier dans le répertoire courant, ce qui permet d'utilisergo get
avec révision / balises. (voir ce lien )-d
signifie "télécharger uniquement", si vous souhaitez une installation directe, omettez cet indicateur et les commandes de construction sous cette ligne.-v
signifie "être verbeux".bin/nsqd.exe
parbin/nsqd
.Le module téléchargé est stocké dans
%GOPATH%\pkg\mod
. Si vous ne voulez pas polluer votreGOPATH
répertoire, créez-en un nouveau et réglez-leGOPATH
.la source
go mod init
faut un identifiant de module, par exemplego mod init local/build
J'ai eu du succès avec ceci:
la source
go get -d <git-url>
simplement télécharger les packages et ignorer l'installation.Cette question est antérieure aux modules Go, mais pour référence future, la procédure correcte dans Go 1.11 pour récupérer une version spécifique est la suivante:
go get github.com/influxdb@[version]
Ou pour obtenir une balise git spécifique:
go get github.com/influxdb@[gitref]
la source
J'ai une approche (un peu hackish, mais qui fonctionne) pour résoudre ce problème, au moins pour les référentiels git: comme les packages go get'ed sont des référentiels de contrôle de source normaux, on peut extraire les balises en utilisant les outils git normaux (pourrait utiliser git à partir de la ligne de commande , J'utilise Atlassian SourceTree).
Pour partager la configuration de mon package avec mes coéquipiers, j'ai créé un dépôt git sur mon GOPATH . J'ai ensuite ajouté tous les packages (au moins ceux que je voulais gérer de cette façon) à ce dépôt en tant que sous-module git. Cela vous oblige à déplacer les dossiers de dépôt existants et à les rajouter en tant que sous-module git, pour ne pas confondre git. Ce processus est quelque peu fastidieux, mais il a valu la peine:
Je peux maintenant commettre et pousser dans mon GOPATH-repo chaque fois que j'utilise un nouveau paquet go. Lorsque mes coéquipiers tirent de ce dépôt et émettent une mise à jour de sous-module git (ou simplement une mise à jour via SoureTree, qui le fait automatiquement), leur version du package est extraite sur la même balise que la mienne.
Bien sûr, cela ne fonctionne que pour les paquets sous contrôle de source git ...
la source
Le plugin maven golang permet de jouer avec la branche, la balise et la révision pendant GET, vous pouvez jeter un oeil à son test pour de tels cas avec le référentiel GIT
la source