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)

当我在网上搜索“字节顺序不兼容”时,我得到了很多点击,显示 Perl 文档说:

这意味着如果您在 perl 5.6.0 或 5.6.1 上运行 Storable 1.x 写入的数据在 Unix 或 Linux 上配置为 64 位整数,那么默认情况下,该 Storable 将拒绝读取它,并给出错误字节顺序不兼容。如果您有这样的数据,那么您应该将 $Storable::interwork_56_64bit 设置为 true 值,以使该 Storable 可以使用旧标题读写文件。您还应该将您的数据或您正在与之通信的任何旧 perl 迁移到当前版本的 Storable。

我不知道的是,如何将此“ $Storable::interwork_56_64bit”设置为真。你能告诉我怎么做吗?

4

3 回答 3

48

我开始收到此错误消息。我正在使用一个位于 Max OS X 分区中的 git 存储库。我有时从 OS X(64 位)访问它,有时从运行 32 位版本 Linux 的 VM 访问它。看起来有一个以机器相关格式存储的缓存文件。

After doing some digging, I believe you can work around the error by blowing away all of the .db files stored in .git/svn/.caches. This should be a slightly more surgical approach than blowing away the entire svn directory.

于 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

我怀疑造成这种情况的一个潜在原因是使用带有 svn 数据的 git 存储库,这些数据已在一台机器上获取,然后存档并下载以在另一台机器上使用。

在我的情况下,它是在 CentOS 上获取的,然后移植到 Ubuntu 机器上——两者都是 64 位安装,但它们的 Perl 配置的一些小细节可能不同。或者也许一个包更新改变了一些东西。

于 2010-08-25T08:43:45.127 回答