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

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

WBOY
WBOYavant
2024-02-14 13:54:08373parcourir

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

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

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

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
  2. require commande

    require internal.net/dir1/dir2/dir3/repo.git v0.0.1
  3. Déclaration en douane à l'importation

    import "internal.net/dir1/dir2/dir3/repo.git/pkg/util"
  4. Il y a plus.

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