混帐difftool,打开所有的差异文件立即,而不是在串行

默认的git的差异行为是打开串口每个差异文件(等待前一个文件打开一个文件前被关闭)。

我正在寻找一种方式来打开所有文件一次 - 在BeyondCompare的例子,这会打开在同一BC窗口中的选项卡中的所有文件。

这将使它更容易检查一组变化复杂; 轻弹向前后的差异文件之间,而忽略不重要的文件。

--------------解决方案-------------

与开始git v1.7.11,你可以使用git difftool --dir-diff执行目录比较。

接下来的答案适用于git超过v1.7.11安装。


同样有人问git的邮件列表中。

我放在一起的基础上从而执行任意提交之间的目录比较的电子邮件线程的shell脚本。

使用Git v1.7.10开始, git-diffall脚本包含在contrib标准git的安装。

对于v1.7.10之前的版本中,您可以安装从git-diffall在GitHub上的项目。

下面是该项目的说明:

该混帐diffall脚本提供了一个基于目录比较机制混帐。 该脚本依赖于diff.tool配置选项,以确定哪些差异阅读器使用。

这个脚本是与所有用于指定一个版本范围,以差异的形式兼容:

1) git diffall显示工作树和阶段性变化之间的差异
2) git diffall --cached [<commit>]显示差异之间上演的变化和HEAD或其他指定提交)
3) git diffall <commit>显示工作树而得名提交的差异
4) git diffall <commit> <commit>两个命名提交的节目差异
5) git diffall <commit>..<commit>同上
git diffall <commit>...<commit>显示在含有分支和高达第二变化,开始于两者的共同祖先<commit>

注:所有形式的一个可选的路径限制器[--] [<path>]

该脚本是基于GIT中名单上提供由托马斯拉斯特一个例子。

编辑:我打包这个故事成为一个博客张贴在这里,它似乎是一个很好的借口了第一个博客:)


以下是我已经定居在:

for name in $(git diff --name-only $1); do git difftool $1 $name & done

这个被修改的文件列表,并呼吁每个单独的文件的外部比较工具。

关键它是命令参数,它告诉外部diff命令在后台任务运行,从而使连续的diff立即运行。 在BeyondCompare的情况下,这将导致所有的文件,在标签中相同的BC窗口,这就是我想要中打开。

为了方便使用,我救了脚本,一个名为diffall.sh并复制 / 我-git的安装目录/加利福尼亚/文件夹,以便它在我的道路,然后创建一个Git别名叫diffall:

git config --global alias.diffall '!sh diffall.sh'

现在,我可以通过键入运行它(接受可选参数,可以如头部或--staged):

git diffall

并且求助于正常的外部差异等:

git difftool


编辑:更新(在博客的详细信息)来处理与空间的路径,更多的无提示设置,和多输入PARAMS。

git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done

meld有一个整洁的功能,如果你给它下的源代码管理目录(GIT,水银,颠覆,集市和可能等)它会自动列出所有修改过的文件,你可以双击查看个体差异。

国际海事组织它更容易输入meld .并把它搞清楚了VCS比配置VCS启动meld 另外,您可以使用相同的命令,不管你的项目发生了什么VCS被使用,如果它们之间有很多开关,它是伟大的。

唯一的缺点是速度较慢的MELD扫描的变化,而不是传递从混帐/ HG / SVN的变化,但无论是缓慢的,足以成为一个问题将取决于你如何使用它,我敢肯定。

git meld => https://github.com/wmanley/git-meld是一个真棒脚本将在一个窗口中打开一个整洁的diff的所有文件。

我也觉得这个方法(GitDiff.bat和GitDiff.rb),其将文件复制出老/新的临时迪尔斯,然后再执行文件夹对他们进行比较。

但我宁愿(从工作目录),直接查看的工作文件,作为BeyondCompare具有能够从差异窗口,这是伟大的快速清理中编辑文件的方便的功能。

编辑:在这里回应我的git的邮件列表上的问题类似的方法。

在这里注意到,Araxis合并具有“-nowait'命令选项:

-nowait可防止等待一个比较封闭比较

也许这将返回立即退出代码和会的工作,任何人都经历呢? 无法找到BeyondCompare类似的选项...

如果你想要做的就是打开所有当前修改的文件,你可以试试:

六$(GIT状态| sed的-n“/.*modified:* /秒/// P')

如果你正在做的“复台的变化”提交,你可能需要重新考虑你的工作流程。 其中一个混帐的非常好的功能是,它很容易让开发人员将复杂的变更集了一系列简单的补丁。 而不是试图编辑所有正在修改的文件,你可能要考虑

git的添加--patch

这将允许你有选择性地上演帅哥。

我写了一个PowerShell脚本将会复制两个工作树和DiffMerge比较。 所以,你可以这样做:

GitNdiff master~3 .

要与当前工作树三样签入前​​比较主分支,例如。

它的光泽和新的,可能是充满了错误。 一个缺点是,但没有加入尚未在工作树文件复制出两种工作树木。 它也可以是缓慢的。

http://github.com/fschwiet/GitNdiff

对于那些有兴趣在使用Git diffall在Mac OS X与Araxis,我分叉在GitHub上的git-diffall项目,并补充说,包装的Araxis合并命令一个AppleScript。 注:这是一个稍微修改克隆araxisgitdiff文件附带Araxis合并为Mac OS X.

https://github.com/sorens/git-diffall

您可以使用gitk和看到所有在同一时间的不同

漫也有VCS的整合。 它互操作提供了数量众多的其他VCS,包括SVN,水银,集市,一...对于Git的,它甚至会显示三个窗格,如果一些但不是所有的变化都在上演。 在冲突的情况下,甚至会出现四个窗格。

混帐difftool,打开所有的差异文件立即,而不是在串行

与调用它

diffuse -m

在Git的工作副本。

如果你问我,最佳的视觉区别我看到了十年。 (我累了,MELD了。)

分类:混帐 时间:2012-01-04 人气:199
本文关键词: 混帐,difftool
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.367 (s). 9 q(s)