22

以下は、「git svn rebase」を試したときに表示されるエラーです。

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

私が実行しているperlのバージョンは次のとおりです。

$ 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)

Web で「Byte order is not compatible」を検索すると、多数のヒットが表示され、次のような Perl ドキュメントが表示されます。

これが意味することは、Unix または Linux で 64 ビット整数で構成された perl 5.6.0 または 5.6.1 で実行されている Storable 1.x によって書き込まれたデータがある場合、デフォルトでこの Storable はそれを読み取ることを拒否し、エラー Byte order を与えることです。互換性がありません。そのようなデータがある場合は、$Storable::interwork_56_64bit を true 値に設定して、この Storable が古いヘッダーでファイルを読み書きできるようにする必要があります。また、データ、または通信している古い perl を、この現在のバージョンの Storable に移行する必要があります。

私が知らないのは、この「$Storable::interwork_56_64bit」を true に設定する方法です。やり方を教えてください。

4

3 に答える 3

48

このエラー メッセージが表示されるようになりました。Max OS X パーティションにある git リポジトリを使用しています。OS X (64 ビット) からアクセスすることもあれば、32 ビット バージョンの Linux を実行している VM からアクセスすることもあります。マシンに依存する形式で保存されているキャッシュ ファイルがあるようです。

掘り下げた後、.git/svn/.caches に保存されているすべての .db ファイルを吹き飛ばすことで、エラーを回避できると思います。これは、svn ディレクトリ全体を吹き飛ばすよりも、少し外科的なアプローチになるはずです。

于 2010-10-11T19:03:56.120 に答える
17

これは最近私の Mac で起こりました。何が原因なのかはわかりませんが、メタデータを吹き飛ばして更新する標準のgit-svn「修正」がうまくいきました:

% 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
...
于 2010-07-22T17:44:30.650 に答える
2

これの潜在的な原因の 1 つは、あるマシンでフェッチされ、その後別のマシンで使用するためにアーカイブおよびダウンロードされた svn データを含む git リポジトリを使用していると思われます。

私の場合、CentOS でフェッチされ、Ubuntu マシンに移植されました。どちらも 64 ビット インストールですが、Perl 構成の細部が少し異なる可能性があります。または、パッケージの更新によって何かが変更された可能性があります。

于 2010-08-25T08:43:45.127 に答える