Maison  >  Article  >  développement back-end  >  Un module Go peut-il être publié dans le même chemin qu'un module précédent non-module ?

Un module Go peut-il être publié dans le même chemin qu'un module précédent non-module ?

王林
王林avant
2024-02-10 09:51:09834parcourir

Go 模块可以与之前的非模块模块发布在同一路径吗?

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.

Contenu de la question

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.modgo.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.modfichier 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 !

Solution de contournement

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 :

  1. Utilisation -x 选项运行 go get :

    $ go get -x tssgit.reyrey.com/teschste/go-utils/v3
  2. 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
  3. Dans ce répertoire, exécutez git ls-remote -q origin 并检查输出。下面的例子是我的机器上不工作时的例子。可以看到headv2.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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer