发布于 2011-11-17 08:13:05
在git版本1.7.11之前
git-diffall是我所需要的,非常感谢。在这个关于git扩散工具的页面和关于从命令行运行vim+dirdiff的一的帮助下,我将自己的$HOME/.gitconfig写成:
[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的工作目录:
git diffall dev如果我想从Vim中持久地修改工作目录,--copy-back也是我所需要的:
git diffall --copy-back dev自从git版本1.7.11以来
自从版本1.7.11以来,"git“学习了"--dir-diff”选项,它简化了事情,不再需要git-diffall。
.gitconfig包含:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'例如,使用分支dev进行工作目录的转换是通过以下方法完成的:
git difftool -d dev发布于 2011-11-16 18:42:57
Git不支持目录的直接差异,但它可以通过第三方扩展来完成。
查看git diffall (公开:我编写了这个脚本)。此脚本与git config diff.tool <TOOL>设置的工具一起工作,以执行真正的目录差异。
此外,请参见以下相关问题:
发布于 2012-06-18 16:48:36
监视提交Vim模块逃犯会很有趣,因为从(git 1.7.11,2012年6月)开始,git现在可以区分目录(即在打开difftool之前显示要比较的所有文件)。
见"给出目录比较?“
因此,将该特性添加到fugitive.vim将是一个从文件到文件差异方法的演变。
然而,齐克斯在评论中指出了这种方法的局限性:
你需要做的就是:
git diff --name-status和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调用)。 从头开始写任何东西都更快。
https://stackoverflow.com/questions/8156493
复制相似问题