差异和修补工具

差异和修补工具

我正在尝试为我修改的一堆文件生成补丁。我正在使用融合它可以在良好的视觉效果下很好地比较文件的差异,然后它允许我保存并根据这些更改生成补丁文件。

我遇到的问题是,一次执行一个操作会很慢。是否有类似的工具可用于批量工作?我希望它递归检查两个目录中的所有文件,并根据其发现生成所有修补程序文件。

答案1

虽然我从未使用过 Meld,但我感觉它实际上在幕后使用了“diff”。我生成补丁文件的方式一直很简单:

$ diff -ruN ${dir1} ${dir2} > ${补丁文件}.patch

这样会生成一个大型补丁文件,然后您可以根据需要将其拆分。要为发现的每个更改生成单独的补丁文件,您只需通过一个脚本运行该大型文件,该脚本在发现新的变更集时会拆分(我手边没有或不知道这个脚本,因为我从未使用过类似的脚本)。

答案2

这就是diff目的。patchdiff输出文件作为输入。只需diff对每个文件运行 BASH 循环即可。例如,如果原始文件位于 dirA 中,而新文件位于 dirB 中(具有相同的文件名),请执行以下操作(在 ./dirA 中):

for n in $(ls * | grep -v ".o$"); do \
    diff -uN $n dirB/$n > $n.patch; patch $n < $n.patch; \
done 

相关内容