Eclipse y nuevas líneas de Windows

182

Tuve que mover mi espacio de trabajo de Eclipse de Linux a Windows cuando mi escritorio se bloqueó. Una semana después lo copio de nuevo a Linux, codigo felizmente, me comprometo con CVS. Y, por desgracia, las nuevas líneas de Windows han contaminado muchos archivos, por lo que CVS diff volca todo el archivo, ¡incluso cuando cambié una o dos líneas!

Podría preparar un script, pero me pregunto si arruinará mis archivos de proyecto de Eclipse.

Vasu
fuente
1
Para convertir finales de línea para pocos / todos los archivos en un proyecto con solo unos pocos clics: stackoverflow.com/a/7019737/1364747
Teddy

Respuestas:

358

Como se menciona aquí y aquí :

Establezca la codificación de archivos UTF-8y los finales de línea para archivos nuevos en Unix, de modo que los archivos de texto se guarden en un formato que no sea específico para el sistema operativo Windows y que se compartan más fácilmente entre escritorios de desarrolladores heterogéneos:

  • Navegue a las preferencias del Espacio de trabajo (General: Espacio de trabajo)
  • Cambie la codificación del archivo de texto a UTF-8
  • Cambie el nuevo delimitador de línea de archivo de texto a Otro y elija Unix de la lista de selección

texto alternativo

  • Nota: para convertir las terminaciones de línea de un archivo existente, abra el archivo en Eclipse y elija File : Convert Line Delimiters to : Unix

Sugerencia : Puede convertir fácilmente el archivo existente seleccionando luego en el Explorador de paquetes y luego yendo a la entrada del menúFile : Convert Line Delimiters to : Unix

VonC
fuente
2
¡Eso es exactamente lo que estaba buscando! Ya lo había cambiado por nuevos archivos, pero la opción de convertir me perdió la vista. Gracias VonC!
Vasu
@ Vasu: de nada :). La vista Esquema y el Explorador de paquetes contienen algunas características para elementos multiseleccionados que a menudo se pasan por alto.
VonC
Gran redacción. Buscar esto yo mismo a través del diálogo de preferencias horriblemente laberíntico de Eclipse me estaba volviendo loco.
Cerin
39
Si elige un proyecto completo en el explorador de paquetes, puede usar el File : Convert Line Delimiters to : Unixcomando para "arreglar" todos los archivos del proyecto a la vez.
Tal Weiss el
11

Tenía los mismos archivos contaminados con eclipse incluso con un cambio de línea. Solución: configuración git de Eclipse -> Agregar entrada: Clave: core.autocrlf Valores: verdadero

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

usuario988282
fuente
Si bien esta es una solución correcta para la mayoría de los casos, puede morderte, por ejemplo, cuando estás calculando sumas de verificación sobre archivos fuente. Estos serán diferentes de una plataforma a otra.
zb226
8

Hay una práctica utilidad bash dos2unix, que es un convertidor de formato de archivo de texto de DOS / MAC a UNIX que, si aún no está instalado en su distribución, debería poder instalarse fácilmente a través de un administrador de paquetes. Página del manual de dos2unix

Ben Hayden
fuente
Estaba planeando escribir un script para hacer esto de forma recursiva en mi espacio de trabajo de eclipse. La única preocupación era corromper cualquier archivo de proyecto interno de eclipse. ¡Gracias por tu sugerencia!
Vasu
7

Además de las soluciones Eclipse y la herramienta mencionada en otra respuesta , considere voltear . Puede 'cambiar' de cualquier manera entre los saltos de línea normales y de Windows, y hace cosas buenas como preservar la marca de tiempo del archivo y otras estadísticas.

Puede usarlo así para resolver su problema:

find . -type f -not -path './.git/*' -exec flip -u {} \;

(Puse una cláusula para ignorar su directorio .git, en caso de que use git, pero dado que flip ignora los archivos binarios por defecto, es posible que no necesite esto).

Michael Scheper
fuente
Solo una nota ... este comando es para usuarios de Linux, no para usuarios de Windows. Windows findno funciona de esta manera.
Brad
@Brad es correcto. Sin embargo, existe un puerto de flip Cygwin: github.com/jaalto/cygwin-package--flip
Michael Scheper
3

Podrías intentarlo. El problema es que Windows inserta un retorno de carro, así como un avance de línea cuando se le da una nueva línea. Los sistemas Unix simplemente insertan un avance de línea. Entonces, el carácter de retorno de carro adicional podría ser la razón por la cual su eclipse se equivoca con las nuevas líneas.

Tome uno o dos archivos de su proyecto y conviértalos. Puede usar Notepad ++ para hacerlo. Simplemente abra el archivo, vaya a Formato-> Convertir a Unix (cuando esté usando Windows).

En Linux solo intente esto en una línea de comando:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
Jamón Vocke
fuente
Tengo alrededor de 10k archivos! Así que tuve que automatizarlo de alguna manera. ¡Gracias por el consejo!
Vasu
Algún error tipográfico en su CLI: sed -i 's/$`echo \\\r`//' yourfile.javay para automatizarlofind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
pdem
3

Para eliminar recursivamente los retornos de carro ( \r) de los archivos CVS / * en todos los directorios secundarios, ejecute lo siguiente en un shell de Unix:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Gabe
fuente