git svn rebase导致“字节顺序不兼容”错误

时间:2010-06-28 19:23:58

标签: perl git-svn compatibility rebase endianness

以下是我在尝试'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文档说:

  

这意味着如果你有   由Storable 1.x运行的数据   在配置的perl 5.6.0或5.6.1上   然后是Unix或Linux上的64位整数   默认情况下这个Storable会拒绝   阅读它,给出错误字节   订单不兼容。如果你有   这样的数据然后你应该设置   $ Storable :: interwork_56_64bit到a   真正的价值使这个可存储的阅读   并使用旧标头写入文件。   您还应该迁移数据,或   你正在沟通的任何旧的perl   与,到目前的版本   可储存的。

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

3 个答案:

答案 0 :(得分:48)

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

在做了一些挖掘之后,我相信你可以通过吹掉存储在.git / svn / .caches中的所有.db文件来解决这个错误。这应该是一个比吹掉整个svn目录更多的手术方法。

答案 1 :(得分: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
...

答案 2 :(得分:2)

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

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