2010-06-28 50 views
22

以下是當我嘗試「混帳SVN變基」我正在錯誤:混帳SVN變基導致「字節順序是不兼容」錯誤

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與Unix或Linux 64位整數配置運行 可保存1.x的書面 數據,那麼 默認情況下,這個可存儲將拒絕 閱讀它,給出錯誤Byte 順序不兼容。如果您有 這樣的數據,那麼您應該將 $ Storable :: interwork_56_64bit設置爲 的真值,以使此Storable讀取 並將文件寫入舊標題。 你也應該遷移你的數據,或者 任何你正在與 進行通信的任何老版本的perl,到當前版本的 可存儲。

我不知道的是,如何設置'$Storable::interwork_56_64bit'爲true。你能讓我知道該怎麼做嗎?

+0

來自@ Dave-Goodell和@Jacques的答案都很好。但@ Dave-Goodell建議的方法需要相當長的時間,特別是如果svn回購是巨大的。在這種情況下,吹掉'.git/svn/.caches'文件夾會有所幫助。我最近遇到了這個問題。試了@戴夫古德爾的答案,但它花了很長時間,所以我殺了它。恢復備份的'.git/svn'文件夾,然後通過@Jacques嘗試回答。它在很短的時間內解決了問題。 – yasouser 2011-10-27 09:55:07

回答

48

我開始收到此錯誤消息。我正在使用一個生活在Max OS X分區中的git倉庫。我有時可以從OS X(64位)訪問它,有時可以從運行32位版本Linux的虛擬機訪問它。它看起來像是一個以機器相關格式存儲的緩存文件。

做了一些挖掘之後,我相信你可以通過吹掉存儲在.git/svn/.caches中的所有.db文件來解決錯誤。這應該是比吹掉整個svn目錄稍微更手術的方法。

+5

工作就像一個魅力! +1 – 2010-11-11 14:56:37

+1

根跟蹤bug http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=587650 – 2011-05-11 04:30:06

+0

這也解決了我的Windows-> Ubuntu移植git倉庫,但我的錯誤是'長整數大小不是在/usr/lib/perl/5.14/Storable兼容。pm行379,在/usr/share/perl/5.14.2/Memoize/Storable.pm行21 無法取消記憶函數'lookup_svn_merge',因爲它不是以/ usr/lib/git-core/git-svn line 3588 END失敗 - 調用隊列在/ usr/lib/git-core/git-svn第39行中止。這是針對x86_64-linux-gnu-thread-multi的perl 5,14版subversion 2(v5.14.2) 花了大約10分鐘,但這可能只是svn的優秀下載。 – 2013-01-08 10:01:27

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

我懷疑這樣的一個潛在原因是使用與SVN一個Git倉庫數據已經在一臺機器上獲取,然後被存檔並下載以供在另一臺機器上使用。

就我而言,它是在CentOS上獲取的,然後移植到了Ubuntu機器上 - 兩種64位安裝,但是它們的Perl配置的一些細節可能都不一樣。或者也許一個軟件包更新改變了一些東西