Как я могу использовать ediff (emacs diff) в качестве инструмента сравнения / слияния в Windows ClearCase? - PullRequest
8 голосов
/ 18 марта 2009

Я вынужден использовать ClearCase (версия для Windows) на работе, и я хочу использовать emacs ediff в качестве инструмента сравнения и слияния. Проблема с файлом карты ClearCase заключается в том, что для него требуются файлы .exe - я попытался указать пакетный файл с именем ediff, но он не работал.

Я не хочу писать программу на C / C ++ (прошло более 10 лет с тех пор, как я что-то написал на C для Win32), которая будет вызывать ediff с правильными аргументами. Есть ли более простой способ?

Смотри также:

Есть ли способ использовать пользовательский инструмент сравнения с cleartool / clearcase?

Ответы [ 2 ]

6 голосов
/ 18 марта 2009

Как уже упоминалось в этом SO вопросе , файл карты позволяет вам вызывать внешний инструмент сравнения.

Для Windows вы должны сначала вызвать emacs в режиме ediff :

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

или

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

(должен вызывать новый экземпляр из XEmacs ediff)

Если это работает, вы можете написать .bat файл, вызываемый файлом карты, и создать соответствующую командную строку "emacs ediff".

Что-то по линиям из:

@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%\")" 

Если файл карты не справляется с вызовом .bat-файла, просто сгенерируйте .exe из вашего .bat.


Я провел несколько тестов, и оказалось:

  • «сравнить с предыдущей версией» фактически вызывает:

    cleartool diff -graphical -pred myFile

  • вызов .bat через вызов cmd.exe не работает

    c:\Program Files\Rational\ClearCase\lib\mgrs\map

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

    cleartool: Error: Operation "xcompare" unavailable for manager "text_file_delta" (Operation pathname was: "C:\Program Files\Rational\ClearCase\lib\mgrs\"c:\WINDOWS\system32\cmd.exe /c c:\cc\test.bat"")

  • преобразование .bat в .exe работает

  • arg2 (%2) и arg4 (%4) - это то, что вы ищете, с arg5 (%5) имя временного файла, созданного для содержимого предыдущей версии (для моментального снимка) представление, которое не может получить доступ к расширенному имени пути)

Таким образом, следующий bat (преобразованный в exe) работает только из командной строки (не из ClearCase Explorer: DrWatson):

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

Вы должны иметь возможность адаптировать его к Xemacs, но Предложение Алекса ( работа с Clearcase из Emacs ) может быть другим более практичным решением.

1 голос
/ 18 марта 2009

Вы можете использовать прозрачный пакет, как описано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...