what - git svn clone error de información de índice mal formado
migrate svn to git with history and branches (13)
Cuando ejecuto git svn clone obtengo el siguiente error:
0 [main] perl 24432 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump fatal: malformed index info 100644 362f1c18ceed5d593eb021432545685283a93
Cuando abro el archivo veo lo siguiente:
Excepción: STATUS_ACCESS_VIOLATION a 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 programa = C: / Archivos de programa / Git / usr / bin / perl.exe, pid 24432, thread principal cs = 0033 ds = 002B es = 002B fs = 0053 gs = 002B ss = 002B
Revisé los siguientes enlaces:
Problema al clonar una única rama de SVN a través de git svn
Enlaces SVN de Python para Windows
subversion python enlaces documentación?
Lamentablemente, no estoy lo suficientemente familiarizado con las tecnologías subyacentes para averiguar exactamente qué debería hacer. ¿Podría estar causando esto y cómo podría resolverlo?
Verifica qué svn commit causó el problema.
Los commits son generados por el comando git svn clone
, precedido por un r . El último compromiso que se genera es el problemático.
El siguiente ejemplo muestra lo que el comando git svn clone
genera cuando se comienza a procesar la revisión de Subversion 15
cuando el Git confirma 373fb1...
:
r15 = 373fb1de430a6b1e89585425f276aae0058c3deb (refs/remotes/svn/trunk)
Dividir el comando git svn clone
usando la opción -r
(revisión)
Usa este método:
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>
Suponiendo que la revisión 15
es la problemática, y el repositorio en /tmp/svn/repo/
, la solución sería:
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/
En mi caso, este error ocurrió con un gran repositorio. Intente clonar la subcarpeta si es posible.
En mi caso, no estaba conectado a nuestra VPN, que es necesaria para nuestra conexión svn. Este es mi error:
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
Este es el problema que tengo:
- Sistema operativo: xubuntu 16.04
- git-svn versión 2.7.4 (svn 1.9.3)
Información de rastreo de 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)
Finalmente solucioné este problema con los siguientes pasos (Esto es para usuarios de Ubuntu Linux 16.04):
sudo apt build-dep subversion
sudo apt install libneon27-dev
sudo cpan SVN::Core
Entonces puedo usar git svn fetch/clone
sin ningún bloqueo.
La causa principal de este problema es que el script de la biblioteca Perl SVN :: Core no coincide con los binarios instalados en Perl (hay binarios de subversión separados instalados en Perl junto a los instalados en el sistema).
Tenga en cuenta que esto degradará la versión svn de su git-svn a 1.8.11 (antes de que sea 1.9.3), y podría causar otros problemas.
Obtuve este error al migrar el enorme repositorio svn a git usando la herramienta svn2git. Agregué líneas debajo en mi archivo .git / config y comenzó a funcionar:
[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
Estas configuraciones se explican en la página de manual de git-config .
Obtuve todo tipo de errores con git-svn, donde la secuencia de comandos perl moriría en varios lugares, la búsqueda se rompería o el servidor cortaría la conexión. Este fue un gran repositorio que tomó docenas de GB cuando se desprotegió a través de svn.
Lo que me solucionó esto fue simplemente usar SmartGit en lugar de git-svn. Requería Java 8, corría extremadamente rápido y no informaba errores, completando a la perfección en unas pocas horas la tarea que llevaba varios días.
Para mí, la única solución que funcionaba era usar una versión anterior de Git. Usé el paquete portátil de Git 1.8.3 que se puede descargar aquí:
https://github.com/msysgit/msysgit/releases/tag/Git-1.8.3-preview20130601
con esto no hubo necesidad de ediciones .git / config, checkouts divididos o declaraciones de depuración perl.
Pude ver el svn repo correctamente usando Cygwin .
Puedo reproducir este problema todas las veces, y git svn funciona perfecto en
versión 1.9.5
Puede instalarlo desde Git-1.9.5-preview20141217.exe desde
https://github.com/msysgit/msysgit/releases/tag/Git-1.9.5-preview20141217
Me pregunto si alguien puede verificar la diferencia entre la versión anterior 1.9.5 y la versión actual (después de pasar de msysgit a aquí)
Es doloroso usar la versión anterior para git, solo porque el git svn no puede funcionar correctamente en la nueva versión.
Tenía excepciones y mensajes de error similares, para mí
git gc
y / o un
git svn gc
trajo el repositorio a un estado utilizable. Ver también https://.com/a/1436386/411846
en mi caso, este error ocurrió en Ubuntu 16.04 y la versión es git-svn versión 2.17.0 (svn 1.9.3) después de ejecutar git svn --version
command, cambio a mi MacOS, que versión es git-svn versión 2.17.0 (svn 1.7.20) después de ejecutar git svn --version
command, luego volver a Ubuntu después de clonar y recuperar exitosamente y otras operaciones en MacOS.
Actualización: Después de actualizar a Ubuntu 17.04 con 2.11.0 y git-svn 1: 2.11.0-2ubuntu0.2, el clon funcionó a la perfección.
Encontré una solución divertida para ese problema al depurar las secuencias de comandos de Perl:
- Reduzca la velocidad o manipule de algún modo la ejecución ejecutando
git svn
en el depurador Perl.
Inicie git svn fetch
con el siguiente comando (puede que tenga que cambiar las rutas. Esto también debería funcionar con el clon). Asegúrese de ejecutar el comando dentro de su repositorio / directorio git:
perl -d /usr/lib/git-core/git-svn fetch
Ingrese lo siguiente en el depurador y presione ENTER :
b /usr/share/perl5/Git/SVN/Fetcher.pm:368 $base==undef or $dup==undef
Esto básicamente agrega un punto de interrupción condicional en la posición donde obtengo la señal 11. Esta es la línea de código:
[ SVN::TxDelta::apply($base, $dup, undef, $fb->{path}, $fb->{pool}) ];
Luego ingrese c
para continuar la ejecución y presione ENTER .
¿Alguien puede explicar por qué esto ayuda?
Editar: Funcionó: ¡213000 revisiones y 1780 ramas clonadas en git!
Actualizado : el problema sigue ocurriendo después de git gc para mí. Probé todas las versiones de Git Windows (32 y 64 bits), pero aun así obtuve este error. Luego cambié a usar git en Linux y funciona bien para mí, incluso para confirmaciones extremadamente grandes. Recomiendo cambiar a Linux, de lo contrario no tendrá suerte ya que el problema que se plantea aquí - https://github.com/git-for-windows/git/issues/274 es casi 6 meses.
Actualizado : para agregar a la respuesta de Cenic, git gc
solo funciona bien para git de 32 bits para Windows, para este problema en particular.
Creo que existe el problema de git de 64 bits para Windows. Estaba teniendo el mismo problema con Git de 64 bits, pero después de cambiar a Git 2.7.2 Windows de 32 bits, el problema parece estar resuelto para mí.