¿Por qué un file registrado en CVS se convierte en espacio doble?

Problema

Con frecuencia (pero no todas las veces) al usar CVS para verificar files como: .java, .cs, .xml , etc., cada línea del file obtiene un retorno de carro.

Ejemplo:

Archivo antes del check-in por un miembro del equipo :

 // Begin file class Foo { public Foo() { // Do step 1 // Do step 2 } } // End file 

Archivo cuando es retirado por un miembro del equipo:

 // Begin file class Foo { public Foo() { // Do step 1 // Do step 2 } } // End file 

Entorno de desarrollo

  • NetBeans 6.8 y ahora 6.9 (el problema ocurrió cuando también usaba 6.8).
  • Visual Studio 2008 y 2010.
  • Repositorio: CVS; checkins y checkouts hechos desde Cygwin bash shell.
  • Sistema operativo: Widows XP Professional.

Lo que he probado

Traté de cambiar el valor: build.compiler.emacs=true dentro de NetBeans en Herramientas-> Opciones, pensando que esto podría estar causando algún tipo de problema de traducción de Unix / Windows al registrarme. Esto no hizo diferencia.

¿Me falta algo sobre lo que le sucede a un file cuando se registra en CVS en una stack de Windows/IDE/Cygwin que puede causar este problema?

Gracias por tu ayuda,

-bn

Algo está convirtiendo saltos de línea DOS (CR LF) a pares de saltos de línea Unix (solo LF). Apuesto personalmente a que es CVS. Es posible que desee intentar usar TortoiseCVS en lugar de Cygwin CVS.

Un cliente CVS nativo de Windwos convertirá las terminaciones de línea de MS-DOS en un file de text (\ r \ n) a terminaciones de línea estilo Unix al enviar el file al server, para que en el repository, los files se mantengan en un ' forma canónica con \n representa un final de línea. Cuando el cliente nativo de Windows también convertirá el final de línea al bajar un file del server.

Sin embargo, creo que el cliente Cygwin CVS pnetworkingeterminado actúa como un cliente Unix y asume que no se requiere conversión de final de línea. Por lo tanto, si utiliza ese cliente para registrar un file con terminaciones al estilo de MS-DOS (\ r \ n), obtendrá este tipo de confusión.

Parece que las personas que usan el cliente Cygwin están utilizando herramientas que les importa convertir los files a terminaciones de línea de estilo de MS-DOS (o algo así).

Una posible solución es desinstalar el cliente Cygwin CVS e instalar el cliente WinCVS en sus cajas de Windows / Cygwin para que el cliente nativo de Windows se use incluso cuando esté activo un shell Cygwin:

Otra posibilidad para configurar tus monturas Cygwin en un modo específico (pero no estoy lo suficientemente familiarizado con Cygwin para saber qué tan bien funciona o si podría presentar otros problemas: hace mucho time que no uso Cygwin) :

Otra posibilidad con la que me encontré: si el file se guardó en formatting Unicode pero se almacenó en CVS como ASCII / Text, se agregarán terminadores de línea adicionales.