Ich versuche, eine Prüfung von Github durchzuführen, und ich erhalte die folgende Fehlermeldung:
[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 ~]$
Also bin ich der Betreuer dieser Repos. Der src / http-Parser ist eine Abzweigung eines anderen Repos, und die Betreuer dieses Repos haben meine Pull-Anforderungen (ohne Angabe von Gründen), der .gitignore
Datei einige automatisch generierte Dateien hinzuzufügen, durchweg nicht akzeptiert . Aber ich denke nicht, dass das hier das Problem ist.
Submodule path 'src/http-parser': checked out '6b05cce82da5c4d407e5576ab892bc20a17b0394'
Antworten:
jgit - Was sind die beworbenen Refs von git? - Stapelüberlauf :
Also, wenn Sie eine bestimmte bekommen begehen mit
--depth
, es höchstens sein muss<depth>-1
Commits vom geholt ref (das ist der Zweig / Tag im Submodul Metadaten angegeben)In der Regel raten die Leute, nur eine
depth
einigermaßen große, aber immer noch viel kleinere Anzahl als die Gesamtzahl der Festschreibungen im Repository50
oder zu wählen100
. Zum Beispiel50
ist das, was Travis verwendet , wenn für das Projekt den anfänglichen Klon zu tun.Wenn Sie das Submodul nicht mit aktualisieren, bedeutet das Nichtfinden
--depth
des Commits Folgendes:--depth
oder sein Eintrag in.gitmodules
hatshallow = true
)In Ihrem speziellen Fall war es der letzte Fall: Festschreiben
5bbcdc5df9d01b521e8da011bab0da70bdec3653
ist überhaupt nicht imhttps://github.com/simsong/http-parser.git
Repo.quelle
depth
?--depth
.Ein Weg, um Zugriff auf ein unbewusstes Objekt zu erhalten, ist die Synchronisierung. Dann sollte ein Submodul-Update funktionieren, wie:
quelle
git submodule update
ein anderes Submodul ausgefallen, aber als ich diese beiden Zeilen auf alle meine Submodule in der richtigen Reihenfolge angewendet habe , hat es endlich funktioniert.$ git submodule sync --recursive; git submodule update
OR auszuführen , wenn dies nur nach dem Klonen einer Remote erfolgt$ git submodule update --init --recursive
. Dadurch wird der Dateibaum Ihres Projekts/project/root/
je nach Inhalt von unten nach unten durchlaufen/project/root/.gitmodules
. Viel mehr bei$ git submodule --help
...--recursive
Flagge enthält.