Подтвердить что ты не робот

Git Ошибка svn-клонирования неверной информации об индексе

Когда я запускаю git svn clone, я получаю следующую ошибку:

  0 [main] perl 24432 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump
  fatal: malformed index info 100644 362f1c18ceed5d593eb021432545685283a93 

Когда я открываю файл, я вижу следующее:

Исключение: STATUS_ACCESS_VIOLATION на rip = 0048360C537 rax = 00000006039F81E0 rbx = 000000005219E248 rcx = 000000060003A3C0 rdx = 0000000000000000 rsi = 000000000000FDB4 rdi = 0000000000000004 r8 = 0000000000000000 r9 = 0000000000000000 r10 = 0000000000230000 r11 = 000000048D785FBA r12 = 0000000000000003 r13 = 000006FFFF7FEDB8 r14 = 00000006014D4030 r15 = 000006FFFF7FEDD0 rbp = 000000000007EDA8 rsp = 000000000022BE80 program = C:\Program Files\ Git\usr\bin\perl.exe, pid 24432, thread main cs = 0033 ds = 002B es = 002B fs = 0053 gs = 002B ss = 002B

Я проверил следующие ссылки:

Ошибка с git клоном SVN

Проблема с клонированием одного ветки SVN через git svn

Связи SVN для Python для Windows

документация по связям python с подвоем?

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

4b9b3361

Ответ 1

Я получил эту ошибку при переносе огромного репозитория svn на git с помощью инструмента svn2git. Я добавил строки в свой файл .git/config и начал работать:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
    packedGitLimit = 256m
    packedGitWindowSize = 256m
    longpaths = true
[http]
    postBuffer = 524288000
[pack]
  deltaCacheSize = 256m
  packSizeLimit = 256m
  windowMemory = 1024m

Эти настройки описаны на странице git -config man.

Ответ 2

Обновление: После обновления до Ubuntu 17.04 с помощью 2.11.0 и git -svn 1: 2.11.0-2ubuntu0.2 клон работал безупречно.

Я нашел забавное решение для этой проблемы при отладке через скрипты perl:

  • Замедляйте или каким-то образом управляйте выполнением, запустив git svn в отладчике perl.

Запустите git svn fetch с помощью следующей команды (возможно, вам придется изменить пути. Это также должно работать с клоном). Обязательно запустите команду в каталоге git repository/:

perl -d /usr/lib/git-core/git-svn fetch

Введите в отладчик следующее: ВВОД:

b /usr/share/perl5/Git/SVN/Fetcher.pm:368 $base==undef or $dup==undef

Это в основном добавляет условную точку останова в том месте, где я получаю сигнал 11. Это строка кода:

[ SVN::TxDelta::apply($base, $dup, undef, $fb->{path}, $fb->{pool}) ];

Затем введите c, чтобы продолжить выполнение, и нажмите ВВОД.

Может кто-нибудь объяснить, почему это помогает?

Изменить: Это сработало: 213000 ревизий и 1780 веток, клонированных в git!

Ответ 3

У меня были похожие исключения и сообщения об ошибках, для меня

git gc

и/или

git svn gc

вернул хранилище обратно в полезное состояние. См. Также fooobar.com/questions/156864/...

Ответ 4

Проверьте, какая проблема была вызвана svn.

Комиты выводятся командой git svn clone, которой предшествует r. Последнее сообщение, которое выводится, является проблематичным.

В следующем примере показано, что выводит команду git svn clone, когда начинается процесс ревизии Subversion 15 как Git commit 373fb1...:

r15 = 373fb1de430a6b1e89585425f276aae0058c3deb (refs/remotes/svn/trunk)

Разделите команду git svn clone, используя опцию -r (ревизия)

Используйте этот метод:

git svn clone -r 0:<problematic_revision - 1> <repo URL>
git svn clone -r <problematic_revision - 1>:problematic_revision <repo URL>
git svn clone -r <problematic_revision>:HEAD <repo URL>

Предположим, что версия 15 как проблемная, а репо в /tmp/svn/repo/, решение будет:

git svn clone -r  0:14   file:///tmp/svn/repo/
git svn clone -r 14:15   file:///tmp/svn/repo/
git svn clone -r 15:HEAD file:///tmp/svn/repo/

Ответ 5

Обновлено. Проблема по-прежнему возникает после git gc для меня. Я пробовал каждую версию git окон (32 и 64 бит), но все-таки я получил эту ошибку. Затем я переключился на использование git на linux, и он отлично работает для меня, даже для очень больших коммитов. Я рекомендую переключиться на Linux, иначе вам не повезло, поскольку проблема поднята здесь - https://github.com/git-for-windows/git/issues/274 почти 6 месяцев.

Обновлено. Чтобы добавить к centic ответ, git gc работает отлично для 32-разрядного git для окон, для этой конкретной проблемы.

Я думаю, что проблема существует для 64-разрядных git для окон. У меня была такая же проблема с 64-битным git, но после переключения на git 2.7.2 windows 32-bit проблемы, похоже, были решены для меня.

Ответ 6

Для меня единственным решением, которое работало, была использование более старой версии Git. Я использовал портативный пакет Git 1.8.3, который можно скачать здесь:

https://github.com/msysgit/msysgit/releases/tag/Git-1.8.3-preview20130601

с ним не было необходимости в редакторах .git/config, расщепленных checkout или perl-отладках.

Ответ 7

Я получал всевозможные ошибки с git -svn, где perl script умирал бы в разных местах, выборка прерывалась бы, или сервер отключил бы соединение. Это было огромное репо, которое заняло десятки ГБ при проверке через svn.

Для меня это решило просто использовать SmartGit вместо git -svn. Он требовал Java 8, работал очень быстро и не сообщал о каких-либо ошибках, легко завершая за несколько часов задачу, которая потребовала svn несколько дней.

Ответ 8

Вот моя проблема:

  • ОС: xubuntu 16.04
  • git -svn version 2.7.4 (svn 1.9.3)

Информация о трассировке от perl -d /usr/lib/git-core/git-svn fetch:

Signal SEGV at /usr/local/share/perl/5.22.1/Git/SVN/Fetcher.pm line 368
    Git::SVN::Fetcher::apply_textdelta(Git::SVN::Fetcher=HASH(0x20ee160), HASH(0x2488a40), undef, _p_apr_pool_t=SCALAR(0x2488bf0)) called at /usr/lib/x86_64-linux-gnu/perl5/5.22/SVN/Ra.pm line 623
    SVN::Ra::Reporter::AUTOLOAD(SVN::Ra::Reporter=ARRAY(0x8d0fa0), SVN::Pool=REF(0x20ee910)) called at /usr/local/share/perl/5.22.1/Git/SVN/Ra.pm line 308
    Git::SVN::Ra::gs_do_update(Git::SVN::Ra=HASH(0x20df170), 42560, 42560, Git::SVN=HASH(0x20dea08), Git::SVN::Fetcher=HASH(0x20ee160)) called at /usr/local/share/perl/5.22.1/Git/SVN.pm line 1205
    Git::SVN::do_fetch(Git::SVN=HASH(0x20dea08), HASH(0x20ee1d8), 42560) called at /usr/local/share/perl/5.22.1/Git/SVN/Ra.pm line 471
    Git::SVN::Ra::gs_fetch_loop_common(Git::SVN::Ra=HASH(0x20df170), 42500, 95400, ARRAY(0x1637c08), ARRAY(0x1637c20)) called at /usr/local/share/perl/5.22.1/Git/SVN.pm line 179
    Git::SVN::fetch_all("svn", HASH(0x20dee28)) called at /usr/lib/git-core/git-svn line 570
    main::cmd_fetch() called at /usr/lib/git-core/git-svn line 386
    eval {...} called at /usr/lib/git-core/git-svn line 384
Aborted (core dumped)

Я, наконец, исправил эту проблему следующими шагами (это для пользователей Ubuntu Linux 16.04):

sudo apt build-dep subversion
sudo apt install libneon27-dev
sudo cpan SVN::Core

Тогда я могу использовать git svn fetch/clone без какого-либо сбоя.

Основная причина этой проблемы заключается в том, что библиотека Perl SVN:: Core script не соответствует двоичным файлам, установленным на Perl (на Perl установлены отдельные подзадачи, установленные на Perl).

Опасайтесь, что это снизит вашу версию git -svn svn до 1,8.11 (до нее 1.9.3) и может вызвать другие проблемы.

Ответ 9

Я смог правильно проверить svn repo, используя Cygwin.

Ответ 10

В моем случае я не был подключен к нашей VPN, что необходимо для нашего svn-соединения. Это моя ошибка:

Exception: STATUS_ACCESS_VIOLATION at rip=00000000000
rax=0000000000000000 rbx=00000006010BBDA8 rcx=00000006010BBDA8
rdx=00000006010C40E8 rsi=0000000000000011 rdi=0000000000000000
r8 =0000000000000000 r9 =00000006010EBCA8 r10=0000000100000000
r11=000000049F2423C9 r12=00000000FFFFC190 r13=00000000FFFFC198
r14=00000006010B2DF8 r15=00000006010B2D68
rbp=00000000FFFFC1A8 rsp=00000000FFFFC138
program=C:\Program Files\Git\usr\bin\perl.exe, pid 7884, thread main
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame        Function    Args
End of stack trace

Ответ 11

В моем случае эта ошибка произошла с большим репозиторием. Поэтому попробуйте клонировать вложенную папку, если это возможно.

Ответ 12

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

версия 1.9.5

Вы можете установить его из Git -1.9.5-preview20141217.exe из

https://github.com/msysgit/msysgit/releases/tag/Git-1.9.5-preview20141217

Интересно, может ли кто-то проверить разницу между старой версией 1.9.5 и текущей версией (после перехода от msysgit к этому)

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

Ответ 13

в моем случае эта ошибка произошла в Ubuntu 16.04, и после git svn --version команды git svn --version, эта версия git-svn версии 2.17.0 (svn 1.9.3), я переключаюсь на свой MacOS, информация о версии которого является git-svn 2.17.0 (svn 1.7.20) после того, как я запустил команду git svn --version, а затем переключился обратно на ubuntu после git svn --version клонирования и выборки и других операций в MacOS.

Ответ 14

Исключение: STATUS_ACCESS_VIOLATION в rip = 00000000000

я получил эту ошибку во время операции извлечения. Позже понял, что сервер SVN не работает. запустил и не получил эту ошибку

Ответ 16

если доступ к репозиторию SVN должен осуществляться через прокси-сервер http/https, необходимо настроить прокси-сервер конфигурации в файле

c:\Users\...\.subversion\servers.

В разделе [global] установите http-proxy-host и http-proxy-port.

Решение от

https://www.bountysource.com/issues/25711817-perl-crash-during-svn-clone