Maison  >  Article  >  développement back-end  >  Aller au module avec plusieurs chemins

Aller au module avec plusieurs chemins

WBOY
WBOYavant
2024-02-10 11:30:10435parcourir

具有多个路径的 Go 模块

L'éditeur PHP Zimo a présenté : Récemment, l'outil de gestion de modules dans le langage Go a inauguré un nouveau module fonction-multipath. L'introduction de cette fonctionnalité permet aux développeurs de spécifier de manière plus flexible le chemin du module lors de l'utilisation des modules Go. Dans le passé, les développeurs ne pouvaient installer les modules que dans des chemins fixes, ce qui entraînait des dépendances de modules plus complexes. Aujourd'hui, l'émergence des modules multi-chemins offre aux développeurs davantage de choix, rendant la gestion des modules plus pratique et plus flexible. Les développeurs peuvent installer des modules dans différents chemins en fonction des besoins du projet, obtenant ainsi une meilleure gestion des modules et un meilleur contrôle des versions. L'introduction de cette nouvelle fonctionnalité améliorera encore l'efficacité du développement et la commodité du langage Go.

Contenu de la question

J'ai un module Go qui est mis en miroir sur plusieurs emplacements. L’un est dans gitlab et l’autre dans bitbucket. Lorsque j'essaie de le baser sur le nouvel emplacement gitlab, j'obtiens :

go: gitlab.com/company/[email protected]: parsing go.mod:
module declares its path as: bitbucket.org/company/core
but was required as: gitlab.com/company/core

Je sais pourquoi cela se produit, mais comment définir mon go.mod comme « ou » ?

Solution

Réponse courte : Vous ne pouvez pas.

Mais tout n'est peut-être pas perdu...

Si vous avez du code à l'emplacement référencé par le chemin du module et dans un emplacement différent à partir duquel, pour une raison quelconque, vous préférez télécharger, vous pouvez configurer git alias pour rediriger la référence du chemin du module spécifié vers la source de téléchargement souhaitée :

git config --global --add url."https://<download path>".insteadof "https://<module path>"

Les alias ne doivent pas être complètement remplacés. Vous pouvez utiliser un alias pour remplacer le préfixe sur n'importe quel chemin de module. Donc, si vous hébergez un certain nombre de modules sur server ces modules (tant que les noms de référentiel sont les mêmes). Par exemple, nous l'utilisons pour créer des chemins de modules « conviviaux » pour les modules hébergés dans un référentiel git de serveur azuredevops local, comme :

git config --global --add url."https://tfs.myorg.com/myorgcollection/_git".insteadof "https://tfs.myorg.com"
Notre module pourra alors s'identifier comme

(le suffixe

est nécessaire pour la fonctionnalité Azure Devops

) tfs.myorg.com/somemodule.git ,但是当 go get 尝试获取此 git 时,它将在 https://tfs.myorg.com/myorgcollection/_git/somemodule 中查找它.git

Pour être honnête, je n'ai pas essayé cela sur un serveur complètement différent juste pour "réécrire" le chemin sur le même serveur, mais en principe cela devrait fonctionner. Alors dans votre cas :

git config --global --add url."https://gitlab.com/company/".insteadof "https://bitbucket.org/company/"
Parce que cela s'applique à .git .

c'est-à-dire lorsque vous

devez citer le

chemin du module déclaré par

 : git 级别的事物,就 go 而言,它仍然从 bitbucket.org 获取,即使 git 将在后台访问 gitlab.com

go get bitbucket.org/company/core

Le seul inconvénient de cette procédure est que vous devez configurer l'alias sur tous les postes de travail (et construire des machines) qui doivent provenir d'un emplacement autre que l'emplacement déclaré dans le chemin du module

. go get

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