8

我在工作中被迫使用 ClearCase(Windows 版本),我想使用 emacs ediff 作为差异和合并工具。ClearCase 映射文件的问题在于它需要 .exe 文件——我试图指定一个批处理文件调用ediff,但它不起作用。

我不想编写一个 C/C++ 程序(自从我用 C 为 Win32 编写任何东西以来已经有 10 多年了),它将ediff使用正确的参数进行调用。有没有更简单的方法?

也可以看看:

有什么方法可以将自定义差异工具与 cleartool/clearcase 一起使用?

4

2 回答 2

6

正如这个SO question中提到的,地图文件允许您调用外部差异工具。

对于 Windows,您应该首先尝试在 ediff 模式下调用 emacs

   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 文件,只需从您的 .bat 文件生成一个.exe.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 的建议使用 Emacs 的 Clearcase)可能是另一个更实用的解决方案。

于 2009-03-18T13:08:04.820 回答
1

您可以使用此处描述的 clearcase 包

于 2009-03-18T14:20:16.987 回答