svn - tutorial - Pesadilla de "estilo de finalización inconsistente"
tortoisesvn tutorial (7)
Estoy completamente atascado con un error de SVN cuando comento 2447 archivos a la vez. Estoy usando TortoiseSVN (última versión) en Windows 7 64bits.
El hecho es que algunos archivos se crearon en Mac y otros en PC, por lo que TortoiseSVN detuvo la confirmación con un error de Inconsistent line ending style
molesto.
Al principio, para resolver este problema, abrí manualmente el archivo incriminado en netbeans , agregué un espacio en blanco, lo quité y guardé para que Netbeans convirtiera correctamente todos los caracteres de fin de línea, pero parece que hay más de "algunos archivos" incriminados.
Por supuesto, busqué una solución en la web, pero no he encontrado ninguna adecuada para el entorno de Windows.
Actualmente estoy golpeando mi cabeza contra las paredes.
Así que respondo a mi propia pregunta con la respuesta de @ assylias :
Puede capturar w:
(/w)/n$
y reemplazarlo con$1/r/n
donde$1
es el carácter.
Buscar y reemplazar con Netbeans con esta expresión regular hace el trabajo.
Edición: mi problema fue que un script personalizado insertó caracteres EOL incorrectos ( /n
lugar de /r/n
) en estos archivos)
Bajo Windows 7, puedes usar Notepad++ v5.6.8
para convertir EOL
Editar -> Conversión EOL -> Windows / Unix / Mac
En Notepad ++, seleccione "Ver -> Mostrar símbolo -> Mostrar final de línea"
En el cuadro de búsqueda (Control-F), seleccione el modo de búsqueda de Expresión regular y busque la cadena:
[^ / r] / n $
(traducción: / n sin una / r delante de ella).
Esto le traerá directamente la (s) línea (s) problemática (s) donde verá la línea que termina con LF en lugar de con el par CR-LF
En Vim o GVim en Windows, todos los archivos rotos mostraron ^M
al final de cada línea.
Para solucionarlo :s//r//g
para eliminar los finales de línea extra rotos.
En relación con la publicación anterior, en realidad, la expresión regular vim debe ser :1,$s//r//g
. Otra forma en * n? X es usando sed:
sed -i ''-es / / r // g''
Para resolver el problema con diferentes finales de línea, puede configurar la propiedad SVN de la siguiente manera:
svn propset svn: mi_archivo nativo de estilo eol
Aunque esto solucionará los problemas de los finales de línea y facilitará la fusión, significará que la culpa mostrará a la persona que agrega el estilo eol como el cambiador de todas las líneas, y también significa que sus archivos de trabajo terminarán siendo copiados en la carpeta temporal al hacer un diff.
El problema de la culpa se puede resolver después haciendo esto:
svn blame my_file -x "--ignore-space-change --ignore-eol-style"
Si todos los finales de línea están en orden, es posible que su archivo de texto tenga una marca de orden de bytes (BOM) UTF16.
Puedes arreglar eso usando Notepad ++. Codificación -> Convertir a UTF-8.