用meld代替svn默认的diff工具

来自个人维基
2015年5月6日 (三) 16:03Hovercool讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

目录

安装meld

在Ubuntu下,只需一条简单的命令就可以了

$:sudo apt-get install meld

让svn使用meld

编辑 "~/.subversion"目录下的"config"文件,将meld赋值给diff-cmd,如下所示:

$gedit ~/.subversion/config
### Set diff-cmd to the absolute path of your 'diff' program.
###   This will override the compile-time default, which is to use
###   Subversion's internal diff implementation.
diff-cmd = meld

此后,使用svn diff命令时,将调用meld工具进行比较。

同样的方法,还可用于更改编辑器等工具:

### Set editor-cmd to the command used to invoke your text editor.
###   This will override the environment variables that Subversion
###   examines by default to find this information ($EDITOR, 
###   et al).
# editor-cmd = editor (vi, emacs, notepad, etc.)
editor-cmd = gedit


实践证明上述方法不可行(svn v1.6.12 | meld v1.5.0),提示如下错误:

Index: WifiEnabler.java
===================================================================
Usage: 
  meld                              启动时打开空白窗口
  meld <文件|目录>              开始版本控制比较
  meld <文件> <文件> [<文件>] 开始两向或三向文件比较
  meld <目录> <目录> [<目录>] 开始两向或三向目录比较
  meld <文件> <目录>            在文件和文件夹/文件之间开始比较

meld: error: no such option: -u
svn: “meld” 返回 2

原因是svn diff的参数与meld不匹配,可按如下方法更改:


让svn使用meld,新版可行的方法

1、在目录~/.subversions/下,新建脚本文件 mydiff.sh

内容如下:

    #!/bin/sh  
      
    # Configure your favorite diff program here.  
    #"/usr/bin/bcompare" 
    DIFF="meld"  
    # DIFF="/usr/bin/meld"  
    # DIFF="/usr/bin/kompare"  
    # DIFF=env LANG=zh_CN.UTF-8 WINEPREFIX="/home/borqs/.wine" wine "C:\\Program Files\\Beyond Compare 2\\BC2.exe"  
      
    # Subversion provides the paths we need as the sixth and seventh   
    # parameters.  
    LEFT=${6}  
    RIGHT=${7}  
      
    # Call the diff command (change the following line to make sense for  
    # your merge program).  
    $DIFF $LEFT $RIGHT   
      
    # Return an errorcode of 0 if no differences were detected, 1 if some were.  
    # Any other errorcode will be treated as fatal.  
    return 0  

2、更改其可执行属性

$:chmod 777  ~/.subversion/mydiff.sh

3、使svn diff命令指引到上述bash

$:gedit ~/.subversion/config 

更改 diff-cmd:

diff-cmd =/home/kaigo/.subversion/mydiff.sh 


参考资料:

http://ninofocus.com/2011/11/27/meld-for-svn-and-git/

http://blog.csdn.net/zzqhost/article/details/7290055