Próbuję zrobić kasę z github, i otrzymałem ten komunikat o błędzie:
[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 ~]$
Więc jestem opiekunem tych repozytoriów. Parser src / http jest rozwidleniem innego repozytorium, a opiekunowie tego repozytorium konsekwentnie nie akceptują moich żądań ściągnięcia (bez podania powodów) dodania do pliku kilku automatycznie wygenerowanych plików .gitignore
. Ale nie sądzę, że o to tu chodzi.
Submodule path 'src/http-parser': checked out '6b05cce82da5c4d407e5576ab892bc20a17b0394'
Odpowiedzi:
jgit - Co to jest reklamowane referencje git? - Przepełnienie stosu :
Tak więc, jeśli chcesz uzyskać określone zatwierdzenie
--depth
, musi to być co najwyżej<depth>-1
commits z dala od pobranego odwołania (który jest odgałęzieniem / znacznikiem określonym w metadanych submodułu)Zazwyczaj ludzie radzą po prostu ustawić
depth
na pewną liczbę rozsądnie dużą, ale wciąż znacznie mniejszą niż całkowita liczba zatwierdzeń w repozytorium -50
lub100
. Np.50
To, czego Travis używa podczas pierwszego klonowania projektu.Jeśli nie aktualizujesz podmodułu za pomocą
--depth
, nie można znaleźć zatwierdzenia oznaczałoby:--depth
lub jego wpis.gitmodules
mashallow = true
)Dla przypomnienia, w twoim konkretnym przypadku był to ostatni przypadek: zatwierdzenia
5bbcdc5df9d01b521e8da011bab0da70bdec3653
w ogóle nie ma whttps://github.com/simsong/http-parser.git
repozytorium.źródło
depth
?--depth
.Jednym ze sposobów uzyskania dostępu do nieadaptowanego obiektu jest synchronizacja. Następnie aktualizacja podmodułu powinna działać, na przykład:
źródło
git submodule update
nie powiodło się na innym submodule, ale kiedy zastosowałem te dwa wiersze do wszystkich moich submodułów w odpowiedniej kolejności , w końcu zadziałało.$ git submodule sync --recursive; git submodule update
LUB, jeśli nastąpi to tuż po sklonowaniu pilota$ git submodule update --init --recursive
. Spowoduje to efektywne przejście od drzewa plików projektu od/project/root/
dołu, zgodnie z tym, co jest w środku/project/root/.gitmodules
. Znacznie więcej w$ git submodule --help
...--recursive
flagę.