toolbelt full for control belt sql-server mercurial

sql-server - full - sql server versioning control



¿Por qué Mercurial cree que mis archivos SQL son binarios? (6)

Andrew tiene razón; es un byte NUL en algún lado (mi suposición sería una marca de orden de byte al principio insertada por una herramienta de editor grosero). Sin embargo, no se preocupe, a diferencia de SVN o CVS, Mercurial no maneja el texto binario o el texto de manera diferente. Los muestra diferentes cuando haces ''hg log'', pero no se manejan de forma diferente.

Próximamente, mercurial libera listas de materiales especiales de casos y no les permite activar el comportamiento de "el usuario probablemente no quiera ver una diferencia de esto en la consola".

Acabo de programar mis proxies almacenados de SQL Server, definiciones de tabla, etc. utilizando SQL Server Management Studio, e intenté agregarlos a mi repositorio de control de fuente de Mercurial. Se agregaron muy bien, pero ahora cuando los cambio y los diferencio, Mercurial los llama "archivos binarios" y no me proporciona una diferencia unificada apropiada.

Pensé que la codificación podría ser un problema, así que intenté regenerar los scripts y especificar ANSI para el resultado del archivo de texto, pero obtengo el mismo comportamiento. Puedo verlos perfectamente en el bloc de notas sin que aparezcan personajes extraños. ¿Por qué Mercurial cree que estos archivos son binarios?

De lo contrario, si alguien puede recomendar una buena herramienta para crear una base de datos de SQL Server que podría no causar este problema, eso también podría funcionar.


De acuerdo con los documentos , se considera binario si hay bytes nulos en el archivo. Los archivos SQL no deberían tener bytes nulos, así que lo verificaría primero (intente buscar en un editor hexadecimal). Supongo que sabes que puedes forzar a diff para tratarlo como texto


Me encontré con esto cuando editaba un archivo de procedimientos almacenados desde SQL Server en Linux y usando git. Git pensó que era un archivo binario porque el archivo de SQL Server era UTF-16 y, por lo tanto, contenía NUL. Mi solución para esto fue emacs, que te permite cambiar la codificación a UTF-8.


Me he encontrado con este problema porque SQL Server Management Studio guarda los archivos como Unicode. Los primeros dos bytes (la mayoría de las veces) de un archivo de texto Unicode definen la codificación. La mayoría de los editores de texto más nuevos (por ejemplo, el Bloc de notas) manejan esto de forma transparente.

Es probable que los dos primeros bytes estén donde está tu problema. Pueden parecer ÿþ. O FF FE en hex.

En el botón "Guardar" en el cuadro de diálogo Guardar hay una lista de selección. Seleccione "Guardar con codificación ..." y seleccione "US-ASCII-Codepage20127". Creo que esta configuración es pegajosa y se mantendrá para futuras grabaciones.


Sé que es un poco tarde, pero se me ocurrió una secuencia de comandos para guardar por lotes los archivos * .sql en UTF-8.

La respuesta completa está publicada en otro hilo en , así que simplemente publicaré el enlace aquí - https://.com/a/9743360/336079 .


Tuve un problema similar y decidí usar una herramienta que se encuentra en http://www.devio.at/index.php/smoscript para ayudarme a resolver el problema. Grabé SMOscript colocando lo siguiente en un archivo cmd .

rd /s /q [the scripts folder] "C:/Program Files/devio IT Services/SMOscript/smoscript.exe" -s [server] -d [database] -F [the scripts folder] -U

La idea es eliminar la carpeta anterior para que cualquier objeto eliminado de la base de datos se elimine del control de origen. Esto también guarda los archivos como UTF8 sin ningún sellado de fecha / hora, por lo que funcionan muy bien en el control de la versión.