这是创建补丁的好方法吗?

use*_*710 18 diff patch

我想从特定gcc分支创建一个补丁,将其与官方版本进行比较;因此,当我从稳定版本中解压缩 tarball 时,我可以应用补丁并获得与该特定分支中的内容相同的内容。

这是我第一次需要创建补丁,所以这是我第一次这样做,我主要关心的是获得正确的选项和解析,因为我们正在谈论一个非常重要的软件

diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
Run Code Online (Sandbox Code Playgroud)

这是否足够并且是最好的方法?

jim*_*mij 28

是的,这是创建补丁的好方法。

简而言之:

  1. 要为单个文件创建补丁,您的命令可能看起来像

    diff -Naru file_original file_updated > file.patch

    在哪里

    • -N: 将不存在的文件视为空
    • -a: 将所有文件视为文本
    • -r: 递归比较找到的任何子目录
    • -u: 输出 NUM(默认 3)行统一上下文
  2. 为整个目录创建补丁:

    diff -crB dir_original dir_updated > dfile.patch

    在哪里

    • -c: 输出 NUM(默认 3)行复制的上下文
    • -r: 递归比较任何子目录
    • -B: 忽略所有行都是空白的更改

毕竟应用这个补丁可以运行

patch -p1 --dry-run < dfile.patch
Run Code Online (Sandbox Code Playgroud)

其中 switchp指示 patch 去除路径前缀,以便正确识别文件。大多数情况下应该是1

--dry-run如果您对打印在屏幕上的结果感到满意,请删除。