Що означає повідомлення про помилку git "Сервер не дозволяє запит для нерекламованих об'єктів"?


22

Я намагаюся зробити замовлення з github, і мені надійшло це повідомлення про помилку:

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

Тож я підтримую ці репости. Src / http-аналізатор - це роздріб іншої репо, і ті, хто підтримує цей репо, послідовно не приймають мої запити на виклик (без вказаних причин), щоб додати до .gitignoreфайлу декілька автоматично створених файлів . Але я не думаю, що тут справа.


Я спробував цю ж команду, і помилки не було. У вас все ще є проблема? До речі, у моєму випадку він перевірив різні Submodule path 'src/http-parser': checked out '6b05cce82da5c4d407e5576ab892bc20a17b0394'
комісії

Питання відсутнє. Я думаю, що це означає, що посилання на підмодуль було для замовлення, яке не існує. Але я не впевнений.
vy32

Відповіді:


7

jgit - Що таке рекламовані реквізити git? - Переповнення стека :

Під час вибору сервер може перелічити наявні посилання та клієнт, які він може бажати отримати. Це рекламні посилання.

  • Схоже, ви не можете безпосередньо отримати будь-яку конкретну комісію від сервера, лише refs (тобто гілки та теги). А точніше, що сервери Github налаштовані забороняти такі запити.
  • Отже, якщо ви хочете отримати конкретну комісію з --depth, вона повинна бути не більше <depth>-1віддаленого від вилученого ref (який є гілкою / тегом, вказаним у метаданих підмодуля)

    Зазвичай люди радять просто встановити depthякусь кількість, досить велику, але все ж набагато меншу, ніж загальна кількість скоєнь у відповіді 50або 100. Наприклад 50, те, що використовує Тревіс, роблячи початковий клон для проекту.

Якщо ви не оновлюєте підмодуль --depth, не вдалося знайти фіксацію означатиме будь-яке з:

  • дерево підмодуля перебуває у стані "неглибокого", і вищезазначене застосовується (можливе лише тоді, коли воно було попередньо оновлене --depthабо ввійшло в .gitmodulesньогоshallow = true )
  • фіксація не на гілці, яку використовує підмодуль
  • команда взагалі не знаходиться в репортажі підмодуля:
    • або хтось помилився,
    • або колись вона там була, але її видалили примусовим натисканням

Для запису, у вашому конкретному випадку, це був останній випадок: фіксування 5bbcdc5df9d01b521e8da011bab0da70bdec3653зовсім не є https://github.com/simsong/http-parser.gitрепо.


Що таке depth?
vy32

@ vy32 додав інформацію про випадок, коли ви не оновлюєте --depth.
ivan_pozdeev

"він колись був там, але був вилучений примусовим натисканням" - чи є в цій ситуації регрес?
skolsuper

@skolsuper виберіть інший документ для завантаження. Наприклад, якщо це був підмодуль, переключіть його на інший комітет у надпроекті.
ivan_pozdeev

2

Один із способів отримати доступ до нереалізованого об’єкта - це синхронізація. Тоді оновлення підмодулю має працювати, як-от:

git submodule sync
git submodule update

1
+1 для простоти. для мене git submodule updateне вдалося в іншому підмодулі, але коли я застосував ці два рядки до всіх своїх підмодулів у правильному порядку , він, нарешті, спрацював.
Біжань
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.