diff - 仅对目录/子目录中选定的文件使用 diff

标签 diff patch

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

最明显的方法是简单地比较所有单独的文件,然后通过复制/粘贴将它们聚合到一个文件中,但是有没有一种自动化的方法可以做到这一点?如果不是,首选的方法是什么?

最佳答案

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

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

关于diff - 仅对目录/子目录中选定的文件使用 diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17843416/

相关文章:

svn - 如何通过 Tortoise SVN 创建带有英文 ASCII header 的补丁?

git - 使用 Intellij 创建 git 修订补丁

python补丁: how to apply

http - 在 Nativescript 应用程序中向服务器发送 http.patch 请求

C++ 基于行的统一差异库

ruby - Ruby "diff-lcs"diff 输出的一般格式是什么?

java - Android Studio : How to compile with customized class but still use module dependency

c - 使用函数指针在 C 中制作固件补丁?

r - R中一列具有等差的子数据框

linux - Windows 与 Linux 上的 svn 差异