![差异和修补工具](https://linux22.com/image/1341510/%E5%B7%AE%E5%BC%82%E5%92%8C%E4%BF%AE%E8%A1%A5%E5%B7%A5%E5%85%B7.png)
我正在尝试为我修改的一堆文件生成补丁。我正在使用融合它可以在良好的视觉效果下很好地比较文件的差异,然后它允许我保存并根据这些更改生成补丁文件。
我遇到的问题是,一次执行一个操作会很慢。是否有类似的工具可用于批量工作?我希望它递归检查两个目录中的所有文件,并根据其发现生成所有修补程序文件。
答案1
虽然我从未使用过 Meld,但我感觉它实际上在幕后使用了“diff”。我生成补丁文件的方式一直很简单:
$ diff -ruN ${dir1} ${dir2} > ${补丁文件}.patch
这样会生成一个大型补丁文件,然后您可以根据需要将其拆分。要为发现的每个更改生成单独的补丁文件,您只需通过一个脚本运行该大型文件,该脚本在发现新的变更集时会拆分(我手边没有或不知道这个脚本,因为我从未使用过类似的脚本)。
答案2
这就是diff
目的。patch
将diff
输出文件作为输入。只需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