vimdiff反对源代码控制回购

时间:2009-05-17 18:49:54

标签: version-control vim diff

scmdiff标记了文件的签入版本与正在编辑的文件之间的差异。它通过着色改变的线条来标记它。有没有办法使用vimdiff样式拆分来查看更改,而不是仅仅更改已更改的行?

例如,如果abc是版本控制下的文件,那么我可以使用以下内容在一侧显示abc的当前版本,在另一端显示最新版本:

tkdiff abc

我也可以这样做:

tkdiff -r1 -r5 abc

显示版本1和5之间的差异。最后,我可以这样做:

tkdiff -r1 abc

查看当前版本与版本1之间的区别。

这是我希望在两个版本的文件之间看到的差异,只使用Vim。可以吗?我在Linux下工作,我使用Bitkeeper进行版本控制。

5 个答案:

答案 0 :(得分:8)

我通过以下方式使用vimdiff进行颠覆:

当我想查看特定文件或一组文件的vimdiff差异时:

svn diff [files] --diff-cmd svd

这里--diff-cmd指示subversion使用命令“svd”而不是默认的diff行为。 svd是以下shell脚本:

#!/bin/bash
shift 5; /usr/bin/vimdiff -f "$@"

你没有提到你的操作系统,上面的内容肯定适用于Linux和OS X.

答案 1 :(得分:8)

我使用vcscommand插件与VCS进行交互。

来自说明:

  

VIM 7插件可用于操作由VIM中的CVS,SVN,SVK和git控制的文件,包括使用vimdiff系统提交更改和执行差异。

特别是:VCSVimDiff将拆分当前窗口,并在repo中显示最新版本的“vimdiff”。您还可以指定一个修订号以将当前缓冲区与(即:VCSVimDiff -2)进行比较,或者将两个修订号进行比较以相互区分。以下是文档中的相关部分:

  

:VCSVimDiff

     

使用vimdiff显示当前版本之间的差异   文件。

     

如果未指定修订,则启用该文件的最新版本   使用当前分支。使用一个参数,使用该参数   如上所述。有两个论点,两者之间的区别   使用vimdiff显示两个修订版。

     

使用零个或一个参数,原始缓冲区用于执行   vimdiff。当暂存缓冲区关闭时,原始缓冲区   将返回正常模式。

     

使用上述方法启动vimdiff模式后,额外的vimdiff   可以通过将单个版本参数传递给缓冲区来添加缓冲区   命令。总共最多可以有4个vimdiff缓冲区。

     

使用命令的2参数形式将vimdiff重置为仅2   版本。此外,在不同的文件上调用该命令将   关闭以前的vimdiff缓冲区。

答案 2 :(得分:2)

VCSCommand插件在这种情况下非常有用,它也可以与SVN,CVS和其他存储库无缝连接。 :VCSVimDiff在缓冲区中加载的文件和存储库中的副本之间应用vimdiff。

答案 3 :(得分:1)

我是bazaar's vimdiff plugin的快乐用户。对于git,可以使用gitvimdiff(可以使用多个other solution)。 Mercurial can do this也是。

答案 4 :(得分:0)

对于ClearCase VCS,存在plug-in,它也能满足您的需求。