Editor PHP Apple menghadapi masalah apabila menggunakan bahasa Git dan Go untuk membangunkan projek: arahan git ls-remote berjaya memperoleh maklumat gudang jauh, tetapi arahan go get tidak berjaya memuat turun pakej bergantung. Masalah ini telah menyusahkan editor untuk masa yang lama Selepas percubaan berterusan dan penyahpepijatan, akhirnya saya menemui penyelesaian. Dalam artikel ini, kami akan memperkenalkan punca dan penyelesaian masalah ini secara terperinci, dengan harapan dapat membantu pembangun yang menghadapi masalah yang sama.
Arahan git ls-remote berjaya untuk repositori seperti yang ditunjukkan di bawah.
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
Namun, apabila menggunakan go get, cmd gagal dan tidak dapat mencari repositori. Output ralat cuba mencari .git dalam 1 direktori di atas struktur repositori.
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
Penswastaan saya ialah
goprivate=internal.net
Apa yang saya ketinggalan di sini untuk mencapai kejayaan?
Tambahkan akhiran vcs dalam laluan modul peribadi untuk menandakan awalan akar repositori:
go get internal.net/dir1/dir2/dir3/repo.git@master
Lihat Akses terus ke modul peribadi:
Pelayan http dalaman mungkin masih diperlukan untuk menyelesaikan laluan modul ke dalam url repositori. Contohnya, apabila arahan go memuat turun modul 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
, tiada permintaan tambahan perlu dibuat.
Sila ambil perhatian bahawa akhiran vcs adalah sebahagian daripada laluan modul, jadi ia harus disertakan di mana-mana laluan modul digunakan. Termasuk:
module
perintah
module internal.net/dir1/dir2/dir3/repo.git
require
perintah
require internal.net/dir1/dir2/dir3/repo.git v0.0.1
Import pengisytiharan kastam
import "internal.net/dir1/dir2/dir3/repo.git/pkg/util"
Ada lagi.
Atas ialah kandungan terperinci git ls-remote berjaya tetapi go get fails. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!