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

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

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

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

diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch

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

答案1

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

简而言之:

  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

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

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

答案2

如果你想将最新的 git checkin 与某个稳定版本进行比较,只需去git diff the-stable-version存储库中(需要找出描述它的标签,可能是确切的版本号或某个变体)。git保留项目的完整历史记录(通常,有办法只获取一部分)。是否处于某个不同的开发分支中并不重要the-stable-version(即,开发分叉并且稳定分支得到了一些最后一刻的修复)。

相关内容