J'essaie de faire une vérification à partir de github, et j'ai reçu ce message d'erreur:
[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 ~]$
Je suis donc le responsable de ces dépôts. L'analyseur src / http est un fork d'un autre dépôt, et les responsables de ce dépôt n'ont toujours pas accepté mes demandes de tirage (sans raison donnée) pour ajouter quelques fichiers générés automatiquement au .gitignore
fichier. Mais je ne pense pas que ce soit le problème ici.
Submodule path 'src/http-parser': checked out '6b05cce82da5c4d407e5576ab892bc20a17b0394'
Réponses:
jgit - Quelles sont les références annoncées par git? - Débordement de pile :
Donc, si vous voulez obtenir un commit spécifique avec
--depth
, il doit être au plus<depth>-1
éloigné de la référence récupérée (qui est la branche / balise spécifiée dans les métadonnées du sous-module)En règle générale, les gens conseillent de simplement définir
depth
un certain nombre raisonnablement grand mais toujours beaucoup plus petit que le nombre total de commit dans le repo-like50
ou100
. Par exemple,50
c'est ce que Travis utilise lors du clonage initial du projet.Si vous ne mettez pas à jour le sous-module avec
--depth
, ne pas trouver le commit signifierait:--depth
ou son entrée dans.gitmodules
hasshallow = true
)Pour mémoire, dans votre cas spécifique, c'était le dernier cas: commit
5bbcdc5df9d01b521e8da011bab0da70bdec3653
n'est pas du tout dans lehttps://github.com/simsong/http-parser.git
repo.la source
depth
?--depth
.Une façon d'accéder à un objet non annoncé est de se synchroniser. Ensuite, une mise à jour du sous-module devrait fonctionner, comme:
la source
git submodule update
échoué sur un autre sous-module, mais quand j'ai appliqué ces deux lignes à tous mes sous-modules dans le bon ordre , cela a finalement fonctionné.$ git submodule sync --recursive; git submodule update
OR, si c'est juste après le clonage d'une télécommande, juste$ git submodule update --init --recursive
. Cela traversera efficacement l'arborescence de votre projet de/project/root/
bas en haut, selon ce qui s'y trouve/project/root/.gitmodules
. Beaucoup plus à$ git submodule --help
...--recursive
drapeau.