Maison > développement back-end > Golang > git ls-remote réussit mais go get échoue

git ls-remote réussit mais go get échoue

WBOY
Libérer: 2024-02-14 13:54:08
avant
450 Les gens l'ont consulté

git ls-remote 成功而 go get 失败

Éditeur PHP Apple a rencontré un problème lors de l'utilisation du langage Git and Go pour développer des projets : la commande git ls-remote peut obtenir avec succès les informations de l'entrepôt distant, mais la commande go get ne peut pas télécharger avec succès les packages dépendants. Ce problème a longtemps troublé l'éditeur. Après des tentatives et des débogages constants, j'ai finalement trouvé une solution. Dans cet article, nous présenterons en détail la cause et la solution de ce problème, dans l’espoir d’être utiles aux développeurs qui rencontrent le même problème.

Contenu de la question

La commande git ls-remote réussit pour le référentiel comme indiqué ci-dessous.

git ls-remote https://internal.net/dir1/dir2/dir3/repo
warning: redirecting to https://internal.net/dir1/dir2/dir3/repo.git/
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    head
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy    refs/heads/master
Copier après la connexion

Cependant, lors de l'utilisation de go get, cmd échoue et ne trouve pas le référentiel. La sortie d'erreur tente de trouver .git dans 1 répertoire au-dessus de la structure du référentiel.

go get internal.net/dir1/dir2/dir3/repo@master
go: internal.net/dir1/dir2/dir3/repo@master: invalid version: git ls-remote -q origin in /Users/{{UserId}}/go/pkg/mod/cache/vcs/xyz...: exit status 128:
    remote: The project you were looking for could not be found or you don't have permission to view it.
    fatal: repository 'https://internal.net/dir1/dir2.git/' not found
Copier après la connexion

Ma privatisation est goprivate=internal.net

Qu'est-ce qui me manque ici pour réussir ?

Solution

Ajoutez le suffixe vcs dans le chemin du module privé pour marquer le préfixe racine du référentiel :

go get internal.net/dir1/dir2/dir3/repo.git@master
Copier après la connexion

Voir Accès direct aux modules privés :

Un serveur http interne peut toujours être nécessaire pour résoudre les chemins des modules dans les URL du référentiel. Par exemple, lorsque la commande go télécharge le module corp.example.com/mod 时,它会向 https://corp.example.com/mod?go-get=1 发送 get 请求,并会查找存储库响应中的 url。为了避免此要求,请确保每个私有模块路径都有一个 vcs 后缀(如 .git),标记存储库根前缀。例如,当 go 命令下载模块 corp.example.com/repo.git/mod 时,它将克隆位于 https://corp.example.com/repo.gitssh://corp.example 的 git 存储库.com/repo.git, aucune requête supplémentaire n'est nécessaire.

Veuillez noter que le suffixe vcs fait partie du chemin du module, il doit donc être inclus partout où le chemin du module est utilisé. Comprend :

  1. module commande

    module internal.net/dir1/dir2/dir3/repo.git
    Copier après la connexion
  2. require commande

    require internal.net/dir1/dir2/dir3/repo.git v0.0.1
    Copier après la connexion
  3. Déclaration en douane à l'importation

    import "internal.net/dir1/dir2/dir3/repo.git/pkg/util"
    Copier après la connexion
  4. Il y a plus.

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