我想从特定gcc
分支创建一个补丁,将其与官方版本进行比较;因此,当我从稳定版本中解压 tarball 时,我可以应用补丁并获得与该特定分支中的内容相同的内容。
这是我第一次需要创建补丁,所以这是我第一次这样做,我主要关心的是获得正确的选项和解析,因为我们正在谈论一个极其重要的软件
diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
这足够并且是最好的方法吗?
答案1
是的,这是创建补丁的好方法。
简而言之:
要为单个文件创建补丁,您的命令可能如下所示
diff -Naru file_original file_updated > file.patch
在哪里
-N
:将不存在的文件视为空文件-a
:将所有文件视为文本-r
:递归比较找到的任何子目录-u
:输出 NUM(默认 3)行统一上下文
为整个目录创建补丁:
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
(即,开发分叉并且稳定分支得到了一些最后一刻的修复)。