À partir de v1.11 Allez ajouter un support pour les modules. Les commandes
go mod init <package name>
go build
générerait les fichiers go.mod
et go.sum
contenant toutes les versions trouvées pour les dépendances du package.
Si un module ne contient aucune version, la dernière validation de ce module est utilisée. Si un module a des versions, la dernière en date est sélectionnée comme dépendance.
Cependant, j'ai parfois besoin de fonctionnalités qui ne figurent pas encore dans une version publiée, mais à partir d'un commit effectué après cette version. Comment définir go.mod
pour qu'il pointe non pas vers une version d'un module, mais vers une validation spécifique dans le référentiel du module?
On dirait que je peux le faire à la main dans go.mod avec
module /my/module
require (
...
github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe
...
)
où v0.0.0
ne correspond pas à la dernière balise de publication publiée, 20181121201909
serait un horodatage de validation et af044c0995fe
serait le hachage de validation? Faut-il que ces informations soient trouvées et entrées manuellement, ou qu’il existe un meilleur moyen?
Allez simplement au hachage de commit que vous voulez:
go get github.com/someone/some_module@af044c0995fe
'go get' mettra correctement à jour les fichiers de dépendance (go.mod, go.sum).
Plus d'informations: https://github.com/golang/go/wiki/Modules#how-to-upgrade-and-downgrade-dependencies
En outre, réponse de Everton sur l'utilisation de go get github.com/someone/some_module@af044c0995fe
pour obtenir une validation spécifique, vous pouvez également utiliser des noms de branche tels que:
go get github.com/someone/some_module@master
go get github.com/someone/some_module@dev_branch
Ces exemples reçoivent le dernier commit sur la branche correspondante.
Il sera toujours enregistré comme pseudo-version dans votre fichier go.mod
, tel que v0.0.0-20171006230638-a6e239ea1c69
. (Cela permet d’obtenir un classement total simple pour toutes les versions sur la base de la commande standard semver ).