首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git,vimdiff和dirdiff

git,vimdiff和dirdiff
EN

Stack Overflow用户
提问于 2011-11-16 18:07:00
回答 3查看 7.9K关注 0票数 23

我试图使用vimdiff+dirdiff.vim来区分使用Git版本的Vim多个文件。

对于Mercurial,使用汞排放扩展是可能的。

我在网络上发现的将Vim与vimdiff集成的唯一方法是在单文件上使用vimdiff,如这个职位中所描述的那样。

有人知道如何使用vimdiff+dirdiff+git吗?

EN

回答 3

Stack Overflow用户

发布于 2011-11-17 08:13:05

在git版本1.7.11之前

git-diffall是我所需要的,非常感谢。在这个关于git扩散工具的页面和关于从命令行运行vim+dirdiff的的帮助下,我将自己的$HOME/.gitconfig写成:

代码语言:javascript
复制
[diff]
  tool = default-difftool

[difftool "default-difftool"]
  cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE

[difftool]
  prompt = false

在我的git-diffall中放置PATH之后,我可以使用以下方法来区分例如使用分支dev的工作目录:

代码语言:javascript
复制
git diffall dev

如果我想从Vim中持久地修改工作目录,--copy-back也是我所需要的:

代码语言:javascript
复制
git diffall --copy-back dev

自从git版本1.7.11以来

自从版本1.7.11以来,"git“学习了"--dir-diff”选项,它简化了事情,不再需要git-diffall

.gitconfig包含:

代码语言:javascript
复制
[diff]
  tool = default-difftool
[difftool "default-difftool"]
  cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'

例如,使用分支dev进行工作目录的转换是通过以下方法完成的:

代码语言:javascript
复制
git difftool -d dev
票数 18
EN

Stack Overflow用户

发布于 2011-11-16 18:42:57

Git不支持目录的直接差异,但它可以通过第三方扩展来完成。

查看git diffall (公开:我编写了这个脚本)。此脚本与git config diff.tool <TOOL>设置的工具一起工作,以执行真正的目录差异。

此外,请参见以下相关问题:

票数 2
EN

Stack Overflow用户

发布于 2012-06-18 16:48:36

监视提交Vim模块逃犯会很有趣,因为从(git 1.7.11,2012年6月)开始,git现在可以区分目录(即在打开difftool之前显示要比较的所有文件)。

见"给出目录比较?

因此,将该特性添加到fugitive.vim将是一个从文件到文件差异方法的演变。

然而,齐克斯在评论中指出了这种方法的局限性:

你需要做的就是:

  1. git diff --name-status
  2. git cat-file

仅此而已(除了一些vimscript代码)。

而且,与git difftool不同,这适用于任何具有VCS diff和vcs cat-file支持的vcs。

Zyx提到了他的项目的逐文件方法的一个例子。

我的aurum具有类似dirdiff的功能(AuVimDiff full打开一堆有差异的文件的vimdiff视图的选项卡),而且它从未使用过任何类型的difftool支持。

(见脚本aurum / autoload / aurum / vimdiff.vim)

Zyx补充说:

对于想要给逃犯添加这种功能的人来说,这并不是一个很好的指南: 实际的git diff --name-status调用隐藏在s:git.status作为repo.functions.status访问的函数中的git驱动程序中(因为mercurial使用的是hg status -r rev1:rev2,而不是hg diff --name-status,我觉得这很符合逻辑)。 因此,您必须在这里遍历三个抽象级别(存储库接口、shell命令包装器以及只有实际的git调用)。 从头开始写任何东西都更快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8156493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档