¿Cómo le digo a TortoiseHg que un archivo no es binario?


Alguien ha añadido recientemente un script de PowerShell (.ps1) a nuestro repositorio Mercurial. El archivo es de texto sin formato, pero TortoiseHg parece pensar que es binario y muestra un mensaje: "Archivo o diferencias no se muestran: Archivo es binario".

Cómo decirle a TortoiseHg que los archivos ps1 son de texto y no binarios. Estoy usando la versión TortoiseHg 2.0.3

Author: Phil Hale, 2011-04-21

3 answers

Los archivos están codificados en codificación UCS-2 y utilicé notepad++ para convertirlo a UTF-8.

Ahora que está hecho, mercurial parece reconocer el archivo como texto y realiza un diff correctamente.

Es hora de que lea esto de nuevo!

Podría valer la pena mirar esto, también ya que UCS-2 parece estar estrechamente relacionado con UTF-16. De acuerdo con ese enlace, lo super-cede, pero el esfuerzo para mover Windows a UTF-16 desde UCS-2 ha estado en curso desde antes de 2000!

 28
Author: Neil Trodden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-21 10:15:00

Lo siento por responder a una publicación que es tan antigua, pero para propósitos históricos, algunos comentarios están en orden.

Primero, el repositorio de código subyacente (mercurial) trata todos los archivos como binarios en lo que respecta a las revisiones. Todo lo que estás perdiendo aquí es la capacidad de ver las diferencias, las diferencias físicas todavía se rastrean, y la naturaleza de esos cambios no son más grandes en virtud del hecho de que Tortoise no puede mostrarlas. (Los archivos binarios JPEG, por el contrario, tienen binarios grandes diferencias incluso para pequeños cambios de píxeles; mientras que estos archivos tendrán diferencias relativamente pequeñas.)

En segundo lugar, aunque Tortoise no puede mostrar las diferencias, kdiff3 puede si configura su mercurial.archivo ini apropiadamente. En su directorio personal, es probable que tenga un mercurial.archivo ini, aunque solo sea para registrar su nombre de usuario. Si lo expande para incluir merge-patterns. Busque aquí los patrones de fusión: http://www.selenic.com/mercurial/hgrc.5.html .

Allí, usted vea cómo decirle a mercurial que las diferencias en estos archivos deben mostrarse con kdiff3, a pesar de que mercurial cree que son binarios. Tortoise todavía no mostrará las diferencias en el banco de trabajo, pero puede hacer clic con el botón derecho en el archivo y mostrar las diferencias al padre, y verá las diferencias muy bien. No es perfecto, pero es mejor que nada.

 5
Author: user2026822,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-01 07:40:19

El uso de notepad++ ayuda a convertir la codificación UCS-2 al UTF-8.

Sin embargo, cuando lo uso, por ejemplo, para convertir el archivo XML (Visual Studio csproj), no olvide cambiar la codificación XML de utf-16 a utf-8, como:

<?xml version="1.0" encoding="utf-8"?>
 1
Author: Peter Stegnar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-29 09:07:27