Estoy tratando de generar el archivo diff (archivo de parche) y aplicar este parche a alguna carpeta ya desplegada. Estoy funcionando con el siguiente comando para generar el archivo diff:tfs generación de archivos diff unificados. línea de encabezado no coincide con el comando de parche
tf diff version.asp /format:unified > C:\patch.diff
Genera algo como:
Comparing local to latest: C:\dev\folder\version.asp File: version.asp ===================================================================
--- version.asp (local) 2011-06-17 09 : 18texto, después del nombre de archivo, no debería estar aquí
+++ v ersion.asp; 958 (servidor) 2011-09-19 14:27lo mismo aquí
@@ -13,7 +13,7 @@
'============================================================
Dim APP_VERSION, APP_BUILD, APP_DATE
APP_VERSION = 6
-APP_BUILD = 45
+APP_BUILD = 52
%>
\ No newline at end of file
============================================================
El problema aparece en la línea que está en negrita. La aplicación UNIX parche no reconoce los nombres de los archivos porque estas líneas solo deben contener el nombre del archivo sin ninguna información adicional. Si elimino el texto después del nombre del archivo en esas líneas, parche se ejecutará correctamente. Entonces mi pregunta es: ¿es posible generar archivos diff desde tf diff sin dicha información en el encabezado para que sea compatible con parche?
Existe una alternativa como aplicar regex y reemplazar tales líneas, pero sería el último intento de hacerlo funcionar.
que
ACTUALIZACIÓN
Gracias al final terminé con regex
que elimina los datos innecesarios de las líneas, ejecutarlo con Unix sed
utilidad, tengo la versión de Windows desde MinGW
.
sed "s/^\(+++\|---\)\(.*\)\(\.[A-Za-z0-9]\{1,4\}\)\(.*\)$/\1\2\3/" C:\patch.diff > C:\patch.new
patch.diff
es archivo con formato incorrecto generado a partir de tfs
y en la salida patch.new
es archivo diff unificado correcta y compatible con patch
utilidad
Update2
después de horas de golpearse la cabeza contra la pared , descubrí que en archivos diff generados a partir de tfs
, los caracteres extendidos Unicode simplemente se escapan o se reemplazan por sus cerrados t Representación ASCII.
Así que, por ejemplo, si el código tiene una letra ä
, en el archivo de salida diff será reemplazado por una simple letra a
.
Esto hace que los archivos diff generados a partir de la utilidad tfs
, inútiles.
Esto es un error obviamente.
FYI: estoy usando VS2010 y Team Foundation Server 2010.
¿Se pueden comparar los mismos dos archivos con 'diff -u' y luego se difieren los diffs? –
En realidad no recibí tu pregunta, lo siento – matsoor
al final terminé con expresiones regulares que elimina esa información innecesaria de las líneas, ejecutarlo con el comando 'sed' de Unix, obtuve la versión de Windows de MinGW. 'sed" s/^ \ (+++ \ | --- \) \ (. * \) \ (\. [A-Za-z0-9] \ {1,4 \} \) \ (. * \) $/\ 1 \ 2 \ 3/"C: \ patch.diff> C: \ patch.new' aquí' patch.diff' es un archivo mal formado y en la salida 'patch.new' es el archivo correcto y compatible con 'patch' utility – matsoor