git clone завершается с «плохим объектом» под msys2 в виртуальной машине

1424
lalebarde

Когда я пытаюсь git cloneсоздать GitHub-проект под моей Windows 7 - MSYS2 VirtualBox VM, происходит сбой:

laurent@Win7 ~/Dev $ LANG="en" GIT_TRACE="1" git clone git://github.com/nanomsg/nanomsg.git trace: built-in: git 'clone' 'git://github.com/nanomsg/nanomsg.git' Cloning into 'nanomsg'... trace: run_command: 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 9412 on Win7' '--check-self-contained-and-connected' remote: Reusing existing pack: 10643, done. trace: exec: 'git' 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 9412 on Win7' '--check-self-contained-and-connected' trace: built-in: git 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 9412 on Win7' '--check-self-contained-and-connected' remote: Total 10643 (delta 0), reused 0 (delta 0) Receiving objects: 100% (10643/10643), 5.60 MiB | 244.00 KiB/s, done. Checking connectivity... trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all' trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all' fatal: bad object e07b5841092eb3bd3b97188f09819511afc6cbed fatal: remote did not send all necessary objects 

Хотя, под моим хостом Gentoo, это работает:

laurent@Gentoo ~/Documents/tmp $ LANG="en" GIT_TRACE="1" git clone git://github.com/nanomsg/nanomsg.git trace: built-in: git 'clone' 'git://github.com/nanomsg/nanomsg.git' Cloning into 'nanomsg'... trace: run_command: 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 24970 on Gentoo' trace: exec: 'git' 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 24970 on Gentoo' trace: built-in: git 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 24970 on Gentoo' remote: Reusing existing pack: 10643, done. remote: Total 10643 (delta 0), reused 0 (delta 0) Receiving objects: 100% (10643/10643), 5.60 MiB | 243.00 KiB/s, done. Resolving deltas: 100% (6433/6433), done. trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' Checking connectivity... trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all' trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all' done 

Я пробовал несколько раз с тем же результатом. Я пытался клонировать другой проект, с тем же результатом. Я предполагаю, что быть внутри ВМ не проблема. После некоторых исследований это может быть вызвано различием текста и двоичного кода между Linux и Windows относительно дополнительного CR для Windows. Но я пока не смог найти решение.

Для информации я установил git внутри MSYS2 с его менеджером пакетов pacman. git, установленный под MSYS (2), должен быть в порядке? Или я должен вместо этого установить msysgit ?

1
msysgit является официальной версией git для Windows, поэтому я бы посоветовал вам попробовать ее (она предназначена для Windows, а не работает под общим уровнем совместимости), но это может и не быть проблемой. Единственный раз, когда я сталкивался с подобными проблемами, это когда в репозитории содержались файлы с:: в имени файла (разрешено в POSIX, но не в Windows), но это приводило к другой ошибке. dtech 10 лет назад 0
@dtech Не могли бы вы уточнить "официальный"? Что это значит? Кто это поддерживает? Значит ли это что-то помимо того, что они разместили на своей странице? jpmc26 9 лет назад 0

1 ответ на вопрос

1
lalebarde

dtech's solution works: use msysgit, "the official version of Git for Windows".

The bad point is that msysgit uses its own MSYS layer. The installer does not propose integration with existing MSYS setup. A project exists here which aims at providing such integration, but from its TODO list, it seems that all Git auto-tests don't pass yet. It is pre-released v0.2.

Похожие вопросы