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 в истинное значение, чтобы это хранилище читало и записывало файлы со старым заголовком. Вы также должны перенести свои данные или любой старый Perl, с которым вы общаетесь, в эту текущую версию Storeable.

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


person yasouser    schedule 28.06.2010    source источник
comment
Оба ответа от @Dave-Goodell и @Jacques работают нормально. Но метод, предложенный @Dave-Goodell, занимает довольно много времени, особенно если репозиторий svn огромен. В таких случаях помогает удаление папки .git/svn/.caches. Я недавно столкнулся с проблемой. Попробовал ответ от @Dave-Goodell, но это заняло целую вечность, поэтому я убил его. Восстановил резервную копию папки .git/svn, а затем попробовал ответ @Jacques. Это решило проблему в гораздо меньшие сроки.   -  person yasouser    schedule 27.10.2011


Ответы (3)


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

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

person Jacques    schedule 11.10.2010
comment
Это также разрешило мой трансплантированный git-репозиторий Windows->Ubuntu, но моя ошибка заключалась в том, что «Длинный целочисленный размер несовместим в /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 строка 3588 END не удалось -- очередь вызовов прервана в /usr/ lib/git-core/git-svn строка 39.' Это Perl 5, версия 14, Subversion 2 (v5.14.2), созданный для x86_64-linux-gnu-thread-multi. Потребовалось около 10 минут, но, возможно, это была лучшая загрузка с svn. - person android.weasel; 08.01.2013
comment
Это также помогло мне после обновления моего 32-битного openSUSE до 64-битного. - person Ber; 03.02.2014
comment
Что-то обновилось (Ubuntu-LTS) и у меня появилась эта проблема. Этот трюк работает как по волшебству! - person comonad; 17.03.2014

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

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

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

person Adrian    schedule 25.08.2010