Maison > Article > développement back-end > git ls-remote réussit mais go get échoue
É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.
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 ?
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.git
或 ssh://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 :
module
commande
module internal.net/dir1/dir2/dir3/repo.git
require
commande
require internal.net/dir1/dir2/dir3/repo.git v0.0.1
Déclaration en douane à l'importation
import "internal.net/dir1/dir2/dir3/repo.git/pkg/util"
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!