Maison > développement back-end > Golang > le corps du texte

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

王林
Libérer: 2024-02-10 09:51:09
avant
834 Les gens l'ont consulté

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
Copier après la connexion

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
)
Copier après la connexion

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
Copier après la connexion

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
    Copier après la connexion
  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
    Copier après la connexion
  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
    Copier après la connexion

    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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!