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 откажется прочитать его, указав ошибку Byte порядок несовместим. Если у вас есть такие данные, которые вы должны установить $Storable:: interwork_56_64bit для истинное значение для чтения этого Storable и записывать файлы со старым заголовком. Вы также должны перенести свои данные или любой более старый perl, с которым вы общаетесь с этой текущей версией Storable.
То, что я не знаю, как установить этот '$Storable::interwork_56_64bit
' в true. Не могли бы вы дать мне знать, как это сделать?
Ответы
Ответ 1
Я начал получать это сообщение об ошибке. Я использую репозиторий git, который живет в разделе Max OS X. Я иногда получаю доступ к нему из OS X (64 бит) и иногда получаю доступ к нему из виртуальной машины с 32-разрядной версией Linux. Похоже, есть файл кеша, который хранится в машинном формате.
После некоторого копания, я считаю, что вы можете обойти эту ошибку, сдув все файлы .db, хранящиеся в .git/svn/.caches. Это должен быть несколько более хирургический подход, чем удаление всей директории svn.
Ответ 2
Это случилось со мной недавно на моем 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
...
Ответ 3
Я подозреваю, что одна из потенциальных причин этого - использование репозитория git с данными svn, которые были получены на одном компьютере, а затем впоследствии архивированы и загружены для использования на другом компьютере.
В моем случае он был извлечен на CentOS, а затем пересажен на машину Ubuntu - обе 64-битные установки, но, возможно, некоторые детали их конфигурации Perl отличаются. Или, возможно, обновление пакета что-то изменило.