Как уже упоминалось в этом 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 ) может быть другим более практичным решением.