2010-01-28 5 views
13

¿Hay alguna manera de decirle a Perforce que deje archivos de texto en solitario sin establecer el tipo de archivo como binario? O bien, salvo eso, ¿hay alguna forma de decirle al cliente de Perforce que use binarios diferentes? Binario por lo general no es deseable, porque pierdo la capacidad de dif.Perforce: evitar que Perforce altere el formato de archivo de texto

Para aclarar: si edito y realizo cambios en un archivo * .txt en mi cliente de ventana, las nuevas líneas tendrán CR + LF según el formato DOS. Pero si sincronizo P4 en un cliente Unix, solo tendrá LF. Necesito Perforce para mantener el formato tal como está, independientemente de dónde viva el cliente de Perforce.

Dicho esto, tengo una solución temporal: establecer el tipo de archivo como binario; y/o crear una rama con archivos de texto configurados como "texto", e integrarlos periódicamente en la línea principal donde los archivos de texto se configuran como "binarios". Pero esta es una solución demasiado complicada para lo que debería ser un problema muy simple.

Por último, estoy en cliente Perforce de Windows 2006.2.

Gracias de antemano.

Respuesta

8

Establezca todas las especificaciones de cliente/espacio de trabajo en terminaciones de línea 'unix'. Entonces no se realizará ninguna conversión cuando ingrese en Windows.

Ver http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/

+0

Ok. Esto es mucho mejor. Si bien no es ideal, es mucho mejor que tener que crear una rama separada. ¡Gracias! – hythlodayr

+0

Enlace actualizado a: http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/ –

-3

Proporcione a los archivos una extensión diferente.

+1

No, ya que se supone que son archivos de calidad de producción. Uno debería ser capaz de sincronizar y copiar en el entorno sin problemas y sin problemas. En la misma línea, unix2dos tampoco es una opción. – hythlodayr

5

El cliente de Perforce puede manejar el final de la línea correctamente cuando se sincroniza con diferentes plataformas, siempre que tenga la opción LineEnd establecida correctamente en su cliente. Tal vez tienes el tuyo equivocado? Abra las especificaciones de su cliente y configure la opción LineEnd según sus necesidades.

Consulte this KB article en su sitio web para obtener más información. He aquí un extracto:

En el lado del servidor, Perforce procesa todos los archivos de texto usando el estilo Unix-LF el fin de línea. Aunque las tiendas Perforce archivos del servidor de archivado en el disco en nativa línea convención de la terminación del sistema de operativo (CR/LF en de Windows, LF en Unix), todas las terminaciones de líneas se normalizan a LF al estilo Unix el fin de línea para internos Perforce Operaciones del servidor como p4 sync, p4 submit y p4 diff.

En el lado del espacio de trabajo del cliente, Perforce manejo de fin de línea se determina por una opción global para cada clientspec. Cuando sincroniza los archivos de texto en un espacio de trabajo del cliente con sincronización p4 o los envía de nuevo a un servidor Perforce con p4 submit, sus finales de línea son convertidos como se especifica en la sección clientspec LineEnd.

+0

Tenía miedo de eso, pero gracias por el artículo. En pocas palabras, nuestros clientes Unix forces (y el servidor de archivos) deben poder mantener una combinación de archivos de texto de Windows y Unix. Peor aún: tenemos ciertos archivos de texto de localización (similares a los archivos de propiedades de Java) que el servidor de Perforce destruye. Desgraciadamente, la única solución es establecer las cosas en binario. – hythlodayr

+0

@hythlodayr: ¿Actualmente tiene un contrato de soporte con Perforce? Si es así, podría llamarlos. Tal vez ellos conocen algunos trucos que pueden hacer que se comporte de la manera que desee. – raven

+0

El problema es que no funciona y Perforce se niega a reconocer el error. Perforce corrompe todos los archivos de texto de forma predeterminada si alguna vez envía un archivo desde * nix que tenga terminaciones de línea de Windows o viceversa. – Richard1403832

1

Al agregar archivos de texto que desea ser considerado binario a Perforce, utilice el comando p4 add con la opción -t para anular la tabla de tipos de mapas. Consulte la documentación here. El ejemplo dado allí es p4 add -t binary file.pdf.

3

Acabo de encontrar exactamente el mismo problema, pero tengo una solución mejor que no implica cambiar las especificaciones del cliente (que son internacionales, y no todas a las que tengo acceso de escritura).

Todos nuestros clientes son PC con Windows, pero Cygwin está incluido en Perforce Depot. Cygwin es una implementación de Windows de Unix, y requiere que los archivos de texto usen LF para las terminaciones de línea.

Una posible solución para las versiones anteriores de Cygwin es montar la raíz utilizando la opción "texto", lo que significa que los archivos pueden tener terminaciones de línea CR + LF. Sin embargo, al actualizar a Cygwin 1.7.9, esto ya no funcionaba, ya que los montajes son transitorios a menos que estén escritos en/etc/fstab. No pude hacer que esto funcione.

Afortunadamente, el Guru Perforce sentado a mi lado se le ocurrió la solución de cambiar el tipo de archivo a + Dbinario, que utiliza el mismo almacenamiento de parches incrementales RCS como archivos de texto, pero sin la línea automática de poner fin a la conversión.

Puedo diferir estos archivos de "texto" con éxito entre mi espacio de trabajo local y el depósito.

Cuestiones relacionadas