2010-07-01 4 views
37

Tengo un problema cuando intento hacer un git svn rebase en mi repositorio. Muestra:Git svn rebase: falta de coincidencia de la suma de comprobación

Checksum mismatch: code/app/meta_appli/app_info.py 
expected: d9cefed5d1a630273aa3742f7f414c83 
    got: 4eb5f3506698bdcb64347b5237ada19f 

He buscado mucho, pero no he encontrado la manera de resolver este problema.

Si alguien sabe, comparta sus conocimientos. Gracias de antemano.

+1

Esto parece ser similar a su problema: http://kerneltrap.org/mailarchive/git/2010/2/18/23715 – NorthGuard

+2

sí, gracias por el enlace. Para el registro me las arreglé para hacer que funcione de nuevo eliminando el archivo del servidor svn, haciendo un checkout a la última revisión y luego agregando el archivo nuevamente en svn. Es bastante duro pero no encontré otra manera. – darkpotpot

Respuesta

53

This solution fue el único que trabajó para mí:

ver lo que el número de revisión del último cambio en el archivo:

git svn log chrome/test/functional/search_engines.py

Restablecer SVN para ser el padre más cercano antes esa revisión:

git svn reset -r62248 -p

Haz un git svn fetch!

Danza en su éxito.

+3

Gran hallazgo. Esta es definitivamente la manera de hacerlo, por lo que he visto. El paso de git svn log fue crucial, aunque necesitaba usarlo de la siguiente manera: git svn log - chrome/test/functional/search_engines.py. Tenga en cuenta que - que indica una ruta de acceso a un archivo, en este caso. –

+1

Un caso especial que requiere más trabajo: el repositorio de subversión tenía un archivo atribuido 'svn: special = *' (enlace simbólico) que fue reemplazado accidentalmente por el archivo de destino. Esto causó errores de "nombre de archivo demasiado largo" con 'git-svn', y luego de arreglar el archivo en subversión obtuvimos errores' checksum mismatch' con 'git-svn'. La solución completa aquí fue: 1) 'git svn rebase --ignore-paths = '; 2) establecer 'core.symlinks = false' en' .git/config'; 3) haz el 'git svn reset' que describes arriba; 4) hacer 'git svn rebase'; 5) eliminar el 'core.symlinks = false' de' .git/config'. ¡Ay! – ntc2

+4

Además vale la pena mencionar, esto ha aparecido una o dos veces más, y después de hacer el reinicio de git svn, un git gc asegura que el historial "varado" se limpia y no se recicla. (lo que puede hacer que el problema se repita). Puede que no tenga que hacer esto, pero ayudó en mi caso. –

1

Me acaba de ocurrir, me quedo sin espacio en medio de un "git svn dcommit" y después recibí el mismo mensaje, "Checksum mismatch".

Acabo de editar .git/refs/remotes/git-svn y reemplazado el id de la confirmación problemática con el anterior. El siguiente rebase corrige el problema.

0

Acabo de hacer un git gc y luego git svn rebase trabajó de nuevo.

1

Encontré este error cuando acabo de especificar las ramas pero no el tronco. Cuando especifiqué una de las ramas como troncal, ya no había ningún error cuando volví a intentarlo. (La distinción "tronco", "rama", "tronco" en general es un poco tonta para hacer cumplir en git svn ya que son solo convenciones humanas sin ningún significado técnico más profundo detrás de ellos en svn.)

-1

En nuestra práctica la error "Checksum mismatch:" en los archivos .shtml en git svn clone ... comando fue causado por la configuración del servidor front-end de Apache para interpretar los archivos .shtml (de SVN) como Server-Side Includes (SSI) y por lo tanto producir contenido en vivo en lugar de solo proporcionar el contenido del archivo almacenado. Desactivación de SSI en el archivo /etc/httpd.conf de Apache para el período de la migración comentando las

AddType text/html .shtml 
AddOutputFilter INCLUDES .shtml 

directivas resuelto el problema.
De todos modos, la migración del repositorio podría excluir algunos caminos y archivos sucede con:

git svn clone <URL> --ignore-paths=<regex> 

cláusula. Tiene sentido comprobar el entorno del proceso del servidor SVN si esos archivos tienen una interpretación especial como SSI (y los archivos .php y .py) y deshabilitarlo.

Cuestiones relacionadas