我开始在Linux上使用Subversion。 svn diff
给人一种非常隐秘的看法 - 对眼睛非常非常不友好。我如何解释其输出?更重要的是,有没有办法查看vimdiff整齐风格的差异,两个文件将并排打开?
答案 0 :(得分:18)
编辑文件$HOME/.subversion/config
,使其包含以下行:
diff-cmd = <your favorite diff application>
一些差异应用支持svn。例如,diff-cmd = meld
应该可以正常工作。但是,vimdiff
不其中之一。原因是svn diff
将文件作为第6和第7个参数进行比较,而不像往常那样作为第1和第2个参数。所以大多数人在这种情况下做的是:
创建包装脚本:
#!/bin/sh
/usr/bin/vimdiff ${6} ${7}
例如,保存在$ HOME / bin / svndiffwrap.sh
不要忘记将其设为可执行文件chmod +x $HOME/bin/svndiffwrap.sh
。
将其设为svn diff命令:
$HOME/.subversion/config
中的:
diff-cmd = /home/<username>/bin/svndiffwrap.sh
注意:某些svn客户端不支持使用$HOME
环境变量的路径。因此,指定完整路径非常有用。
答案 1 :(得分:10)
发现于: http://blog.tplus1.com/index.php/2007/08/29/how-to-use-vimdiff-as-the-subversion-diff-tool/
此博客文章直接从SVN book external diff tools example:
获取脚本<强> diffwrap.sh 强>
#!/bin/sh
# Configure your favorite diff program here.
DIFF="/usr/local/bin/vimdiff"
# 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.
注意:这假设您的vimdiff
位于/usr/local/bin
,对我而言,在Fedora中,它位于/usr/bin
。如果你找不到它:
$ whereis vimdiff
然后在~/.subversion/config
:
[helpers]
...
diff-cmd = /home/<username>/bin/diffwrap.sh
答案 2 :(得分:6)
vimdiff <(svn diff)
<()
被称为process substitution,它会从svn diff
的输出中创建一个伪文件,供vimdiff
使用。
您可以像这样创建一个shell别名:alias svndiff='vimdiff <(svn diff)'
PS - 这是我还没找到的最简单的解决方案;它改变了我的生活(相对而言)!
答案 3 :(得分:1)
VCSCommand可以为您完成 - 安装插件,导航到该文件,然后按<Leader>cv
答案 4 :(得分:0)
我使用tkdiff和tkcvs作为svn。很好的并排观点。
答案 5 :(得分:0)
每个文件的基础都存储在.svn文件夹中,因此您可以编写小脚本来启动vimdiff或mgdiff,以在.svn文件夹中提供一个路径来比较您的文件。这不需要你为svn制作vimdiff默认的diff命令。
答案 6 :(得分:0)
遵循这些步骤
安装colordiff 例如:对于Ubuntu sudo apt-get install colordiff
现在您可以尝试将svn diff输出输出到colordiff: svn diff -r Rev1:Rev2文件| colordiff
在您的bash配置文件(〜/ .bashrc或〜/ .bash_profile)中添加以下代码以方便访问。
svndiff(){ svn diff“ $ {@}” |色差 }
源bash配置文件。
来源〜/ .basrc 现在可以使用了... 您可以最有效地在终端中看到svn差异。
例如:svndiff
答案 7 :(得分:0)
在将vimdiff与svn一起使用时,我喜欢状态栏中包含修订和文件,所以我使用以下内容:
svnvimdiff.sh
#!/bin/bash
/usr/bin/vim -R -d -f --nofork -n -c "let F1='${5//$'\t'/ }' | set statusline=%{F1} | let F2='${3//$'\t'/ }' | setlocal statusline=%{F2}" ${6} ${7}
说明:
在 $ HOME / .subversion / config
中添加/更改diff-cmddiff-cmd = /yourpath/svnvimdiff.sh