Maison >développement back-end >Golang >Un module Go peut-il être publié dans le même chemin qu'un module précédent non-module ?
Le module Go est une fonctionnalité importante introduite dans la version 1.11 du langage Go, qui peut aider les développeurs à mieux gérer et à s'appuyer sur des bibliothèques tierces dans les projets. Pour les projets précédents développés en mode non-module, l'éditeur PHP Banana indique à tout le monde que les modules et les modules non-modules peuvent être publiés dans le même chemin. L'avantage est qu'il peut facilement et progressivement migrer les projets existants vers le mode module, tout en conservant la convivialité et la stabilité du projet. Cependant, il convient de noter que lors de la publication de modules et de modules non-modules sous le même chemin, vous devez suivre certaines règles et conventions pour assurer le fonctionnement normal du projet.
J'ai une petite bibliothèque qui a été hébergée dans un référentiel non-module, mais je souhaite maintenant la convertir en module go.
J'ai exécuté avec succès :
go mod init go mod tidy
go.mod
和 go.sum
Le fichier est créé sans erreurs et la bibliothèque réussit toujours les tests.
Les versions précédentes étaient v2.0.0
,所以我将版本增加到v3.0.0
,并将/v3
添加到go.mod
à la fin du nom du module. D'après ce que j'ai vu en ligne, c'est ce qui est nécessaire.
Mon go.mod
fichier ressemble à ceci :
module tssgit.reyrey.com/teschste/go-utils/v3 go 1.19 require ( github.com/lib/pq v1.10.9 golang.org/x/text v0.9.0 )
J'ai ensuite publié la bibliothèque sur notre serveur git interne et j'ai pensé que j'étais prêt.
Lorsque j'essaie d'ajouter une bibliothèque à un nouveau projet de module go, je reçois le message suivant :
Installing: tssgit.reyrey.com/teschste/go-utils/v3 Installing dependency: tssgit.reyrey.com/teschste/go-utils/v3 go: module tssgit.reyrey.com/teschste/go-utils@upgrade found (v2.0.0+incompatible), but does not contain package tssgit.reyrey.com/teschste/go-utils/v3 Failed to add dependencies: exit status 1
J'ai découvert que si j'ajoutais v3.0.0
发布到新路径 (tssgit.reyrey.com/teschste/go-utils2
), j'étais capable de l'ajouter avec succès à mon nouveau projet, même si j'augmentais à nouveau la version principale du projet.
Est-ce qu'il me manque quelque chose qui me permettrait de continuer à publier sur le même chemin, ou est-ce juste quelque chose que vous ne pouvez pas faire ?
Toute aide serait grandement appréciée !
Oui, ceci est pris en charge. Le sous-répertoire version est facultatif.
J'ai trouvé une situation qui provoque l'erreur que vous voyez. Cela se produit lorsque la branche principale n'est pas mise à jour (pointant toujours vers la balise v2.0.0
)并且新标签 v3.0.0
et n'est pas poussée vers le serveur. Veuillez vérifier pour vous assurer que le référentiel distant est mis à jour.
Si le référentiel distant a été mis à jour mais ne fonctionne toujours pas, vous pouvez affiner le problème comme ceci :
Utilisation -x
选项运行 go get
:
$ go get -x tssgit.reyrey.com/teschste/go-utils/v3
cd
Entrez le répertoire affiché dans la sortie. Le chemin du répertoire est comme ceci :
/home/username/go/pkg/mod/cache/vcs/96f42aa32430149c99ad6625ceafc5b59e047b9e11d6a03f687d59845b53b2d5
Dans ce répertoire, exécutez git ls-remote -q origin
并检查输出。下面的例子是我的机器上不工作时的例子。可以看到head
和v2.0.0
都指向同一个commit id,并且没有v3.0.0
.
$ git ls-remote -q origin 5ac4c172806e80461086ea9feb485cec0b6a27f0 HEAD 5ac4c172806e80461086ea9feb485cec0b6a27f0 refs/heads/main bbdc583c0b83489db1a30fa6ca8559ffa295a74d refs/heads/other-branch 5ac4c172806e80461086ea9feb485cec0b6a27f0 refs/tags/v2.0.0
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!