我在工作中被迫使用ClearCase(Windows版本),我想使用emacs ediff作为差异和合并工具。 ClearCase映射文件的问题是它需要.exe文件 - 我试图指定一个调用ediff
的批处理文件但它不起作用。
我不想编写一个C / C ++程序(自从我用C编译Win32中的任何内容已经超过10年),它将使用正确的参数调用ediff
。有更简单的方法吗?
答案 0 :(得分:6)
如此SO question中所述,地图文件允许您调用外部差异工具。
对于Windows,您应该先尝试to call emacs in ediff mode:
emacs --eval "(ediff-files \"file_1\" \"file_2\")"
或
xemacs -eval "(ediff-files \"file_1\" \"file_2\")"
(应该调用XEmacs ediff的新实例)
如果这样做,您可以编写由映射文件调用的.bat
文件,并构建相应的“emacs ediff
”命令行。
along the lines的东西:
@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文件时地图文件不方便,只需generate an .exe
from your .bat
。
我做了一些测试,事实证明:
“与之前的版本进行比较”实际上会调用:
cleartool diff -graphical -pred myFile
通过cmd.exe调用调用.bat不起作用
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"")
转换.exe中的.bat确实有效
arg2(%2
)和arg4(%4
)是您正在寻找的,arg5(%5
)为内容创建的临时文件的名称以前的版本(对于无法访问扩展路径名的快照视图)
所以下面的bat(在exe中转换)只能从命令行 (而不是来自ClearCase Explorer:DrWatson):
"C:\Program Files\WinMerge\WinMergeU.exe" %4 %5
您应该能够将其改编为Xemacs,但Alex's suggestion(working with Clearcase from Emacs)可能是另一种更实用的解决方案。
答案 1 :(得分:1)
您可以使用here
所述的clearcase包