2

我正在尝试为我的项目创建一个补丁。
本质上,我有一个包含许多文件和子目录的目录,我的补丁应该只适用于各种子目录中的文件子集。我不能在整个原始 vs 修改目录上使用 diff,因为还有其他文件会受到 diff 的影响。是否有使用 diff 命令为文件子集创建补丁的自动化方式?

显而易见的方法是简单地比较所有单个文件,然后通过复制/粘贴将它们聚合到一个文件中,但是有自动的方法吗?如果不是,那么首选的方法是什么?

4

2 回答 2

3

通常,在这种情况下,补丁文件中感兴趣的文件的大多数路径都是相同的,除了最顶层的组件。例如:

diff -u original/some/path/foo.c mine/some/path/foo.c

您应该创建要为其创建补丁的文件的完整列表,但会丢失最顶层的路径组件。使用该列表,您可以简单地将其提供给一个循环,该循环将每个文件名提供给一个diff命令,其中添加了文件的顶部。

$ cat changed_files
some/path/foo.c
some/other/path/bar.c
$ while read f ; do diff -u original/$f mine/$f ; done < changed_files > patch_file
于 2013-07-24T20:09:31.897 回答
0

一个不错的工具是rsync,它允许您将文件从一个目录“同步”到另一个目录。通过使用该--dry-run选项,您可以查看哪些文件不同。如果您不关心差异是什么,这是一个不错的选择。

于 2013-07-24T19:44:26.100 回答