web-dev-qa-db-fra.com

Comment pointer la dépendance du module Go dans go.mod vers la dernière validation dans un référentiel?

À 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
...
)

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?

28
dimus

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

44
Everton

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 ).

28
typical182