2010-06-28 14 views
22

Im Folgenden ist der Fehler, den ich immer bin, wenn ich 'git svn rebase' versucht:git svn rebase in Folge "Byte-Reihenfolge ist nicht kompatibel" Fehler

Byte order is not compatible at ../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/_retrieve.al) line 380, at /usr/lib/perl5/5.10/Memoize/Storable.pm line 21 

Die Version von Perl bei mir läuft ist:

$ perl --version 

This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int 
(with 12 registered patches, see perl -V for more detail) 

Wenn ich die Web gesucht „Byte-Reihenfolge ist nicht kompatibel“ und ich zahlreiche Hits bekommen, die die Perl doc zeigt, das sagt:

Das bedeutet, dass, wenn Sie Daten geschrieben von Storable 1.x haben auf Perl 5.6.0 oder 5.6.1 konfiguriert mit 64-Bit-Integer auf Unix oder Linux dann standardmäßig läuft diese Storable verweigern zu lesen es gibt den Fehler Byte Reihenfolge ist nicht kompatibel. Wenn Sie solche Daten haben, dann sollten Sie $ Storable :: interwork_56_64bit auf einen True-Wert setzen, um dies speicherbar lesen und schreiben Sie Dateien mit dem alten Header. Sie sollten auch Ihre Daten migrieren, oder alle älteren Perl, die Sie kommunizieren mit, um diese aktuelle Version von Storable.

Was ich nicht weiß, ist, wie man diese '$Storable::interwork_56_64bit' auf True setzt. Können Sie mir bitte sagen, wie es geht?

+0

Beide Antworten von @ Dave-Goodell und @ Jacques funktioniert gut. Aber die von @ Dave-Goodell vorgeschlagene Methode braucht eine ziemlich lange Zeit, besonders wenn das SVN Repo riesig ist. In solchen Fällen hilft das Wegblasen des Ordners ".git/svn/.caches". Ich bin kürzlich auf das Problem gestoßen. Versuchte die Antwort von @ Dave-Goodell, aber es dauerte ewig, also habe ich es getötet. Den gesicherten '.git/svn'-Ordner wiederhergestellt und dann die Antwort von @Jacques versucht. Es löste das Problem in viel kürzerer Zeit. – yasouser

Antwort

48

Ich fing an, diese Fehlermeldung zu erhalten. Ich verwende ein Git-Repository, das in einer Max OS X-Partition lebt. Ich greife manchmal von OS X (64 Bit) darauf zu und manchmal von einer VM aus, auf der eine 32-Bit-Version von Linux läuft. Es sieht so aus, als gäbe es eine Cache-Datei, die in einem maschinenabhängigen Format gespeichert ist.

Nach einigen Grabarbeiten glaube ich, dass Sie den Fehler umgehen können, indem Sie alle in .git/svn/.caches gespeicherten .db-Dateien wegblasen. Dies sollte ein etwas mehr chirurgischer Ansatz als das Wegblasen des gesamten SVN-Verzeichnisses sein.

+5

Arbeitete wie ein Charme! +1 –

+1

Root-Tracking-Fehler http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=587650 –

+0

Dies löste auch meine Windows-> Ubuntu-transplantierten Git-Repository, aber mein Fehler war 'Long Integer-Größe ist nicht kompatibel unter /usr/lib/perl/5.14/Storable.pm Zeile 379, unter /usr/share/perl/5.14.2/Memoize/Storable.pm Zeile 21 Die Funktion 'lookup_svn_merge' konnte nicht deaktiviert werden, da sie nicht unter/usr/lib/git-core/gespeichert wurde. git-svn Zeile 3588 END fehlgeschlagen - Anrufwarteschlange abgebrochen unter/usr/lib/git-core/git-svn Zeile 39. ' Dies ist Perl 5, Version 14, Subversion 2 (v5.14.2) für x86_64-linux-gnu-thread-multi gebaut dauerte etwa 10 Minuten, aber das könnte nur der herausragende Download von Svn sein. –

17

Das ist mir vor kurzem auf meinem Mac passiert. Ich bin mir nicht sicher, was es verursacht, aber die Standard-git-svn „fix“ des Blasens, die Metadaten und die Aktualisierung für mich gearbeitet weg:

% mv .git/svn .git/svn.bak 
% git svn fetch 
Migrating from a git-svn v1 layout... 
Data from a previous version of git-svn exists, but 
     .git/svn 
     (required for this version (1.7.1) of git-svn) does not exist. 
Done migrating from a git-svn v1 layout 
Rebuilding .git/svn/refs/remotes/bg-threads-1.1/.rev_map.a5d90c62-d51d-0410-9f91-bf5351168976 ... 
r5758 = 545e176a13e87d44a2750ff5f06959088efc9e5b 
... 
2

ich eine mögliche Ursache dafür vermuten, dass ein Git Repository mit SVN verwendet Daten, die auf einem Computer abgerufen und anschließend für die Verwendung auf einem anderen Computer archiviert und heruntergeladen wurden.

In meinem Fall wurde es auf CentOS geholt und dann auf eine Ubuntu-Maschine transplantiert - beide 64-Bit-Installationen, aber vielleicht sind ein paar Details ihrer Perl-Konfiguration anders. Oder vielleicht hat ein Paket-Update etwas geändert.