集成winmerge作为subversion的diff工具

subversion默认的diff工具比较简单,文本界面,在使用时不是很理想。

    winmerge则是一款非常优秀的diff/merger工具,由于winmerge自带和clearcase的集成功能,因此我在公司工作环境下一直都是使用winmerge替代clearcase自带的diff工具。

    近日使用svn,每次执行svn diff后都对出来的文本比较结果的效果不满意,即使换成TortoiseSVN的diff工具也还是不够好。因此产生想法,能否将winmerger集成到subversion.

    google了一下"winmerge subversion",顺利在国外的一个blog上找到答案,实验了一下,很成功,效果非常好,现在将具体方法共享出来。

    设置之前首先请先安装好subversion和winmerge,之后步骤如下:

    1.建立bat文件
        文件名winmergediff.bat,内容如下:

        start "WinMerge" /B /WAIT "C:\Program Files\WinMerge\WinMergeU.exe" /e /ub /dl %3 /dr %5 %6 %7

        请保证WinMergeU.exe的路径和实际安装路径一致。这个文件放哪里无所谓,方便起见我放到subversion的客户端配置目录中。


    2.修改subversion的客户端配置文件

   
        在windows下,subversion的客户端配置文件存放在当前用户的application data目录下,具体路径取决于操作系统。

        在vista下路径是 C:\Users\**user**\AppData\Roaming\Subversion.
        在windows 2003下路径是c:\Documents and Settings\**user**\Application Data\Subversion.

        打开config文件,找到这行
            # diff-cmd = ********
        打开注释,将内容修改为
            diff-cmd = C:\Users\**user**\AppData\Roaming\Subversion\winmergediff.bat
   

    测试一下,在命令行下执行 svn diff,可以看到winmerge会启动并显示两个不同版本的文件,diff的效果可不是svn那个文本界面能比的。


    顺便去官网看了一下,发现现在使用的winmerge的版本比较旧了,下了一个新版本测试了一下,在安装时发现有两个选项,分别是和clearcase/TortoiseSVN集成,对于TortoiseSVN用户就非常的方便了。如果使用绿色版本的winmerge,可以自行手工设置,在settings->external programs->diff viewer中设置:"D:\Program Files\WinMerge\WinMergeU.exe -e -x -ub -dl %bname -dr %yname %base %mine"。


    对于其他的版本控制工具,winmerge提供了相应的集成方法,详细请看官网文档
    Version control integration
    http://winmerge.org/docs/manual/VersionControl.html

    饮水思源,贴出来找到的blog地址,作者还试过集成windiff,使用类似工具的朋友可以参考他的方法。
    http://flimflan.com/blog/UsingWinMergeWithSubversion.aspx

    值得注意的是有个回帖,提到一个改进,"single-instance behavior",不清楚这个特性的作用,有兴趣的朋友可以研究一下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> I have what I think is an improvement -- the latest version of WinMerge allows you to have "single-instance behavior"-- ie. One instance of WinMerge can have several diff sessions (comparisons of pairs of files) open in it.

To use this, just take out the "/WAIT" and add the "/s":

start "WinMerge" /B "C:\Program Files\WinMerge\WinMergeU.exe" /e /s /ub /dl %3 /dr %5 %6 %7



你可能感兴趣的:(C++,c,SVN,IE,subversion)