我有一个文件和一个补丁。我想在视觉上应用补丁,t.i。看看补丁提出的更改如何在上下文中查看,进行一些更正,并保存生成的文件。
哪种工具可以做到?
视觉差异工具(即meld,diffuse,diffmerge)都不能满足我的要求:它们不适用于补丁,它们只是合并整个文件。
答案 0 :(得分:23)
我非常喜欢 Kompare 。它只是diff(
)的一个(非常好的)图形界面http://www.caffeinated.me.uk/kompare/
sudo apt-get install kompare
创建和应用补丁
Kompare能够创建补丁文件 其中仅列出了差异 两个比较文本文件A和。之间 B.此外,Kompare可以应用补丁 以这种方式创建的文件 原始文件A,并以这种方式, 重新计算的内容 相应的文件B.这是一个 通过一个舒适的实用程序 已修正的文件版本为 已经老了的朋友 同一个文件的版本,因为只有 (相对较小的)补丁文件有 交付和接收器可以 通过生成更正的文件 将补丁应用于原始补丁 文件。
由其创建和应用的修补程序 Kompare与补丁文件兼容 由命令生成或应用 行界面diff实用程序,因为 Kompare实际上只是一个图形 前端到差异和补丁是 由补丁创建和应用,其中 被Kompare召集。
答案 1 :(得分:15)
请参阅use vimdiff with a diff file。
gvim original.file +'vert diffpa the.patch'
这将打开GVim并拆分窗口,左边是原件,右边是补丁。然后,您可以添加,删除或更改数据,并保存更改。 (好吧,如果你想创建new.patch
,你必须再次运行diff
,但这并不困难。)
答案 2 :(得分:7)
您可以使用emacs ediff mode。 它允许您以交互方式查看和验证每个块。 为了它的价值,我在〜/ bin目录中有这个方便的脚本:
#!/bin/bash
if [ "$1" == "--text" ] ; then shift; fi
if diff --brief $1 $2 ; then
exit 0
else
emacs -fn 8x13bold --eval '(ediff-files "'$1'" "'$2'")'
fi
答案 3 :(得分:4)
另一种选择:如果您使用Eclipse,则可以直观地生成和应用补丁。
答案 4 :(得分:1)
使用可视化差异工具的想法是:
某些工具(例如meld或diffuse)会自动区分以前提交的文件版本。
关键的见解是,您可以应用补丁,只要您有备份副本,或者您正在进行干净的结账,它们就会丢弃您不喜欢的所有内容。
如果您对阅读和修改统一差异感觉更舒服,并且只想拥有更多差异的上下文,则emacs具有相当独特的功能,在查看差异文件时可以next-error-follow-mode(差异主模式) 。这显示了目标文件中diff线的上下文。
答案 5 :(得分:1)
我通常使用GitExtensions(.NET和Mono),它也支持以交互方式应用补丁。我希望你已经熟悉git了。
编辑:此行下面提到的所有内容似乎都不能直接在KDiff3中使用。正如我之前提到的:我还没有尝试过。
GitExtension通常使用KDiff3作为差异工具,它可以查看补丁。
http://kdiff3.sourceforge.net/doc/kpart.html
使用它作为补丁它只有两个窗口视图,(编辑)并且不支持合并:(但它也支持完整文件夹上的3路差异等。
实际上我从没试过补丁。
答案 6 :(得分:1)
在Kompare(如果KDE是你的一杯茶是一个相当不错的软件)的平台上,我同意Eclipse是一个很好的选择。
我一直是一个不情愿的Eclipse用户,我一直对这些工具的工作效果印象深刻(一旦平台最终启动)。
在Fedora上,我已经为每个主要版本控制引擎安装了每个前端(SVN - 也为我的Windows机器,Mercurial,git等提供服务); Meld非常好(虽然没有补丁界面)。 淹没也很好。 但是,一旦我想出在包含我的工作副本的文件夹中创建项目,Eclipse确实知道如何应用补丁和工作复制项目自己创建,它可能成为我最喜欢的SVN前端。
答案 7 :(得分:0)
xxdiff
能做你想要的吗?
答案 8 :(得分:-4)
我会使用meld。
创建两个文件副本,一个没有,另一个带有补丁。使用meld来比较它们,您可以确切地看到补丁正在发生变化,并根据需要进行更改。
说真的,为什么这么难?