适用于Linux的可视补丁工具

时间:2009-12-10 09:25:53

标签: linux user-interface diff patch

我有一个文件和一个补丁。我想在视觉上应用补丁,t.i。看看补丁提出的更改如何在上下文中查看,进行一些更正,并保存生成的文件。

哪种工具可以做到?

视觉差异工具(即meld,diffuse,diffmerge)都不能满足我的要求:它们不适用于补丁,它们只是合并整个文件。

9 个答案:

答案 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)

使用可视化差异工具的想法是:

  1. 制作修补文件的备份副本(或整棵树的新原始结帐)
  2. 应用补丁
  3. 使用视觉差异工具查看上下文中的更改
  4. 对视觉差异工具中的修补文件进行任何所需的更改。
  5. 某些工具(例如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来比较它们,您可以确切地看到补丁正在发生变化,并根据需要进行更改。

说真的,为什么这么难?