Saya mencoba melakukan checkout dari github, dan saya mendapat pesan kesalahan ini:
[user@arch ~]$ git clone --recursive https://github.com/simsong/tcpflow.git
Cloning into 'tcpflow'...
The authenticity of host 'github.com (192.30.253.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.253.113' (RSA) to the list of known hosts.
remote: Counting objects: 4190, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 4190 (delta 21), reused 29 (delta 12), pack-reused 4146
Receiving objects: 100% (4190/4190), 50.27 MiB | 2.21 MiB/s, done.
Resolving deltas: 100% (2954/2954), done.
Submodule 'src/be13_api' (https://github.com/simsong/be13_api.git) registered for path 'src/be13_api'
Submodule 'src/dfxml' (https://github.com/simsong/dfxml.git) registered for path 'src/dfxml'
Submodule 'src/http-parser' (https://github.com/nodejs/http-parser.git) registered for path 'src/http-parser'
Cloning into '/home/user/tcpflow/src/be13_api'...
remote: Counting objects: 1203, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 1203 (delta 2), reused 5 (delta 1), pack-reused 1194
Receiving objects: 100% (1203/1203), 477.47 KiB | 1.96 MiB/s, done.
Resolving deltas: 100% (821/821), done.
Cloning into '/home/user/tcpflow/src/dfxml'...
remote: Counting objects: 1929, done.
remote: Total 1929 (delta 0), reused 0 (delta 0), pack-reused 1929
Receiving objects: 100% (1929/1929), 572.09 KiB | 2.89 MiB/s, done.
Resolving deltas: 100% (1294/1294), done.
Cloning into '/home/user/tcpflow/src/http-parser'...
remote: Counting objects: 1487, done.
remote: Total 1487 (delta 0), reused 0 (delta 0), pack-reused 1487
Receiving objects: 100% (1487/1487), 667.24 KiB | 2.46 MiB/s, done.
Resolving deltas: 100% (916/916), done.
Submodule path 'src/be13_api': checked out 'c81521d768bb78499c069fcd7c47adc8eee0350c'
Submodule path 'src/dfxml': checked out 'c31224626cf5f6678d42cbcfbfcd4e6191c9a864'
error: Server does not allow request for unadvertised object 5bbcdc5df9d01b521e8da011bab0da70bdec3653
Fetched in submodule path 'src/http-parser', but it did not contain 5bbcdc5df9d01b521e8da011bab0da70bdec3653. Direct fetching of that commit failed.
[user@arch ~]$
Jadi saya adalah pemilik repo-repo ini. Src / http-parser adalah garpu repo lain, dan pengelola repo itu secara konsisten tidak menerima permintaan tarikan saya (tanpa alasan yang diberikan) untuk menambahkan beberapa file yang dibuat secara otomatis ke .gitignore
file tersebut. Tapi saya pikir bukan itu masalahnya di sini.
Submodule path 'src/http-parser': checked out '6b05cce82da5c4d407e5576ab892bc20a17b0394'
Jawaban:
jgit - Apa referensi yang diiklankan git? - Stack Overflow :
Jadi, jika Anda ingin mendapatkan komit tertentu
--depth
, itu harus paling banyak<depth>-1
komit dari ref yang diambil (yang merupakan cabang / tag yang ditentukan dalam metadata submodule)Biasanya, orang menyarankan untuk hanya mengatur
depth
ke beberapa nomor yang cukup besar tetapi masih jauh lebih kecil dari jumlah total komit di repo seperti50
atau100
. Misalnya50
apa yang digunakan Travis ketika melakukan klon awal untuk proyek.Jika Anda tidak memperbarui submodule dengan
--depth
, gagal menemukan komit berarti salah satu dari:--depth
atau entri masuknya.gitmodules
telahshallow = true
)Sebagai catatan, dalam kasus spesifik Anda, itu adalah kasus terakhir: komit
5bbcdc5df9d01b521e8da011bab0da70bdec3653
sama sekali tidak ada dalamhttps://github.com/simsong/http-parser.git
repo.sumber
depth
?--depth
.Salah satu cara untuk mendapatkan akses ke objek yang tidak dikonversi adalah dengan menyinkronkan. Maka pembaruan submodule akan berfungsi, seperti:
sumber
git submodule update
gagal pada submodule lain, tetapi ketika saya menerapkan dua baris ini ke semua submodul saya dalam urutan yang benar , akhirnya berhasil.$ git submodule sync --recursive; git submodule update
ATAU, jika hanya setelah kloning remote, baru saja$ git submodule update --init --recursive
. Ini secara efektif akan melintasi pohon file proyek Anda dari/project/root/
bawah, sesuai dengan apa yang ada di dalamnya/project/root/.gitmodules
. Lebih banyak di$ git submodule --help
...--recursive
bendera.