¿Cómo puedo usar ediff (emacs diff) como herramienta de diferencias / fusión en Windows ClearCase?

StackOverflow https://stackoverflow.com/questions/658127

Pregunta

Me veo obligado a usar ClearCase (versión de Windows) en el trabajo, y quiero usar emacs ediff como herramienta de diferencias y fusión. El problema con el archivo de mapa ClearCase es que requiere archivos .exe: he intentado especificar un archivo por lotes que llame a ediff y no funcionó.

No quiero escribir un programa C / C ++ (han pasado más de 10 años desde que he codificado algo en C para Win32) que llamará a ediff con los argumentos adecuados. ¿Hay una manera más simple?

Vea también:

Cualquier forma de utilizar una herramienta de diferencia personalizada con cleartool / clearcase?

¿Fue útil?

Solución

Como se menciona en este Pregunta SO , el archivo de mapa le permite llamar a una herramienta de diferencias externa.

Para Windows, primero debe intentar para llamar a emacs en modo ediff :

   emacs --eval "(ediff-files \"file_1\" \"file_2\")" 

o

   xemacs -eval "(ediff-files \"file_1\" \"file_2\")" 

(debería invocar una nueva instancia de XEmacs ediff)

Si esto funciona, puede escribir un archivo .bat llamado por el archivo de mapa y construir el apropiado " emacs ediff " línea de comando.

Algo en la línea de:

@echo off
set local
if !%XEMACS_PATH%!==!! SET
XEMACS_PATH=C:\<XEmacs-Path>\i586-pc-win32
set FILE1=%~1
set FILE2=%~2
REM * Bad habit - working on administrative shares.. Why is $->$ not needed?
REM SET FILE1=%FILE1:$=$%
REM SET FILE2=%FILE2:$=$%
REM * Escaping backslash..
SET FILE1=%FILE1:\=\\%
SET FILE2=%FILE2:\=\\%

"%XEMACS_PATH:"=%\gnudoit.exe" "(ediff \"%FILE1%\" \"%FILE2%\")" 

Si el archivo de mapa no está a gusto llamando a un archivo .bat, simplemente genera un .exe desde su .bat .


He realizado algunas pruebas y resulta que:

  • " comparar con la versión anterior " en realidad llama:

    cleartool diff -graphical -pred myFile

  • llamar al .bat a través de una llamada cmd.exe no funciona

    c: \ Archivos de programa \ Rational \ ClearCase \ lib \ mgrs \ map

    text_file_delta xcompare " c: \ WINDOWS \ system32 \ cmd.exe / c c: \ cc \ test.bat "

    cleartool: Error: Operación "xcompare" no disponible para el administrador " text_file_delta " (El nombre de ruta de la operación era: " C: \ Archivos de programa \ Rational \ ClearCase \ lib \ mgrs \ " c: \ WINDOWS \ system32 \ cmd.exe /cc:\cc\test.bat"")

  • transformar el .bat en .exe funciona

  • arg2 (% 2 ) y arg4 (% 4 ) son lo que está buscando, con arg5 (% 5 ) el nombre del archivo temporal creado para el contenido de la versión anterior (para la vista de instantánea que no puede acceder al nombre de la ruta extendida)

Entonces, el siguiente murciélago (transformado en exe) funciona solo desde la línea de comandos (no desde ClearCase Explorer: DrWatson):

"C:\Program Files\WinMerge\WinMergeU.exe" %4 %5

Debería poder adaptarlo a Xemacs, pero Sugerencia de Alex ( trabajar con Clearcase de Emacs ) podría ser otra solución más práctica.

Otros consejos

puede usar el paquete clearcase como se describe aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top