“Sunucu reklamsız nesne isteğine izin vermiyor” git hata iletisi ne anlama geliyor?


23

Github'dan bir ödeme yapmaya çalışıyorum ve bu hata mesajını aldım:

[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 ~]$

Ben de bu depoların koruyucusuyum. Src / http-parser, başka bir repo'nun çatalıdır ve bu repo'nun koruyucular, .gitignoredosyaya otomatik olarak oluşturulan birkaç dosya eklemek için çekme isteklerimi (hiçbir sebep olmadan) tutarlı bir şekilde kabul etmediler . Ama burada sorun olduğunu sanmıyorum.


Aynı komutu denedim ve bir hata yoktu. Hala bir sorunun mu var? Benim durumumda Btw farklı taahhüt teslim:Submodule path 'src/http-parser': checked out '6b05cce82da5c4d407e5576ab892bc20a17b0394'
ge0rdi

Sorun gitti. Bence bu, alt modül referansının mevcut olmayan bir ödeme için olduğu anlamına geliyor. Ama emin değilim.
vy32

Bu mesajın karıştığı diğerleri için bir not olarak, bir alt modülü güncellerseniz, bir üst modülü yeni işleme güncellerseniz ve asla yeni modülü alt modülde zorlamazsanız ortaya çıkabilir. Ardından, elbette, alt modülün uzaktan kumandasındaki bir taahhüdü kontrol etmekte zorluk çekeceksiniz!
Patrick Sanan

Sorun, alt modülü güncellediğim, üst repoyu güncellediğim, üst repoyu ittiğim, ancak alt modülü itmediğim gibi görünüyor. Tam anlamıyla, ana repo, alt modülün github repo'sunda olmayan bir taahhüdüne atıfta bulundu.
vy32

Yanıtlar:


8

jgit - Git'in reklamı yapılan başvurular nedir? - Yığın Taşması :

Getirme sırasında, sunucu sahip olduğu ve istemcinin almak isteyebileceği başvuruları listeleyebilir. Bunlar reklamı yapılan referanslardır.

  • Görünüşe doğrudan herhangi bir tek spesifik, sunucudan sadece ref (yani dalları ve etiketleri) işlemek alınamıyor. Daha doğrusu, Github sunucuları bu tür isteklere izin vermeyecek şekilde yapılandırılmıştır.
  • Bu nedenle, belirli bir taahhüt almak istiyorsanız --depth, en çok <depth>-1getirilen ref'den (alt modülün meta verilerinde belirtilen şube / etikettir) uzakta olması gerekir.

    Tipik olarak, millet sadece sete tavsiye depthgibi - oldukça büyük ama yine de repo taahhüt toplam sayısı çok daha küçük bir sayıya 50veya 100. Örn. 50Travis, proje için ilk klonu yaparken kullanır.

Alt modülü ile güncellemiyorsanız --depth, taahhüdü bulamamanız aşağıdakilerden herhangi biri anlamına gelir:

  • (daha önce birlikte güncellendi inde mümkündür submodule ağacı "sığ" durumunda olduğu ve yukarıda geçerlidir --depthya onun giriş .gitmodulesvardırshallow = true )
  • taahhüt alt modülün kullandığı dalda değildir
  • taahhüt alt modülün deposunda yer almıyor:
    • ya birisi hata yaptı,
    • ya da bir zamanlar oradaydı ama zorla iterek silindi

Kayıt için, özel durumunuzda, son durum buydu: taahhüt 5bbcdc5df9d01b521e8da011bab0da70bdec3653hiç repoda değil https://github.com/simsong/http-parser.git.


Nedir depth?
vy32

@ vy32, güncelleme yapmadığınız zaman vaka için bilgi ekledi --depth.
ivan_pozdeev

"Bir zamanlar oradaydı ama zorla itme ile silindi" - bu durumda herhangi bir başvuru var mı?
skolsuper

1
@skolsuper almak için farklı bir taahhüt seçin. Örneğin, bu bir alt modülse, süper projede farklı bir işleme geçirin.
ivan_pozdeev

3

Reklamsız bir nesneye erişmenin bir yolu senkronize etmektir. Sonra bir alt modül güncellemesi çalışmalıdır, örneğin:

git submodule sync --recursive
git submodule update

1
Basitlik için +1. benim git submodule updateiçin başka bir alt modülde başarısız oldu, ama bu iki satırı tüm alt modüllere doğru sırayla uyguladığımda nihayet çalıştı.
Bizhan

2
Potansiyel olarak büyük süper projeler $ git submodule sync --recursive; git submodule updateiçin, sadece bir uzaktan klonlama işleminden hemen sonraysa VEYA gerçekleştirmeniz tavsiye edilir $ git submodule update --init --recursive. Bu /project/root/, içerisine göre proje dosya ağacınızı aşağıdan etkili bir şekilde geçecektir /project/root/.gitmodules. Çok daha fazla $ git submodule --help...
Cbhihe

Teşekkürler @Cbhihe --recursiveBayrağı dahil etmek için cevabı düzenleyeceğim .
carver
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.