git clone schlägt mit "bad object" unter msys2 in einer VM fehl

1538
lalebarde

Wenn ich git cloneein Github-Projekt unter meiner Windows 7 - MSYS2 VirtualBox VM versuche, schlägt dies fehl:

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 

Unter meinem Gentoo-Gastgeber funktioniert es jedoch:

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 

Ich habe es mehrmals mit dem gleichen Ergebnis versucht. Ich habe versucht, ein anderes Projekt mit dem gleichen Ergebnis zu klonen. Ich gehe davon aus, in einer VM zu sein, ist kein Problem. Nach einigen Nachforschungen kann dies durch den text / binären Unterschied zwischen Linux und Windows in Bezug auf die zusätzlichen CR für Windows verursacht werden. Aber ich konnte noch keine Lösung finden.

Zur Information habe ich git in MSYS2 mit seinem Paketmanager pacman installiert. git unter MSYS (2) installiert sollte schon richtig sein? Oder muss ich stattdessen msysgit installieren ?

1
msysgit ist die offizielle Version von git für Windows. Ich würde Ihnen raten, es auszuprobieren (es ist für Windows gedacht, anstatt unter einer generischen Kompatibilitätsebene zu laufen), aber das ist möglicherweise nicht das Problem. Das einzige Mal, dass ich solche Probleme gesehen habe, ist, wenn das Repo Dateien mit einem: im Dateinamen enthielt (in POSIX zulässig, jedoch nicht in Windows), aber dies gab einen anderen Fehler. dtech vor 10 Jahren 0
@dtech Könnten Sie näher auf "offiziell" eingehen? Was bedeutet das? Wer unterstützt das? Ist das etwas anderes als die Tatsache, dass sie es auf ihre Seite stellen? jpmc26 vor 10 Jahren 0

1 Antwort auf die Frage

1
lalebarde

Die Lösung von dtech funktioniert: Verwenden Sie msysgit, " die offizielle Version von Git für Windows ".

Der Nachteil ist, dass msysgit eine eigene MSYS-Schicht verwendet. Das Installationsprogramm schlägt keine Integration mit dem vorhandenen MSYS-Setup vor. Es gibt hier ein Projekt , das auf eine solche Integration abzielt, aber aus seiner TODO-Liste scheinen alle Git-Autotests noch nicht zu bestehen. Es ist v0.2 vorab veröffentlicht.