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 отличаются. Или, возможно, обновление пакета изменило что-то.