git svn rebase привел к ошибке "Порядок байтов не совместим"

Ниже приведена ошибка, которую я получаю при попытке выполнить 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, настроенном с 64-битными целыми числами в Unix или Linux, то по умолчанию этот Storable откажется их читать, выдавая ошибку Порядок байтов не совместимо Если у вас есть такие данные, вы должны установить $Storable::interwork_56_64bit в истинное значение, чтобы этот Storable считывал и записывал файлы со старым заголовком. Вам также следует перенести свои данные или любой более старый Perl, с которым вы общаетесь, в текущую версию Storable.

Чего я не знаю, так это как установить$Storable::interwork_56_64bitк истине. Можете ли вы дать мне знать, как это сделать?

3 ответа

Решение

Я начал получать это сообщение об ошибке. Я использую git-репозиторий, который находится в разделе Max OS X. Иногда я получаю к нему доступ из OS X (64-разрядная версия), а иногда - к виртуальной машине с 32-разрядной версией Linux. Похоже, что есть файл кэша, который хранится в машинно-зависимом формате.

После некоторых копаний, я думаю, что вы можете обойти эту ошибку, удалив все файлы.db, хранящиеся в.git/svn/.caches. Это должно быть немного более хирургическим подходом, чем уничтожение всего каталога SVN.

Это случилось со мной недавно на моем 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
...

Я подозреваю, что одной из возможных причин этого является использование репозитория git с данными svn, которые были извлечены на одном компьютере, а затем архивированы и загружены для использования на другом компьютере.

В моем случае он был извлечен на CentOS, а затем перенесен на машину с Ubuntu - обе 64-битные установки, но, возможно, некоторые мелкие детали их конфигурации Perl отличаются. Или, возможно, обновление пакета изменило что-то.

Другие вопросы по тегам