下一主题:,上一主题:,上一级:发布   [目录][索引]


12.2 发布补丁

如果程序很大,为每个版本制作一组相对于上一个重要版本的差异补丁会很有用。

在差异补丁集的前面,简要说明此补丁适用于哪个版本,以及它是相对于哪个旧版本的。 还要说明人们需要做哪些其他事情才能正确更新源代码(例如,在安装差异补丁之前删除或重命名某些文件)。

制作差异补丁的目的是使它们体积小。为了保持它们的小体积,请排除用户可以轻松更新的文件。例如,排除 info 文件、DVI 文件、tags 表、Bison 或 Flex 的输出文件。 在 Emacs 的差异补丁中,我们排除编译后的 Lisp 文件,让安装程序重新编译已打补丁的源代码。

当您制作差异补丁时,每个版本都应该位于一个适当命名的目录中,例如 gcc-2.3.2gcc-2.3.3。这样,从差异补丁本身就可以非常清楚地知道哪个版本是哪个。

如果您使用 GNU diff 来制作补丁,请使用 ‘-rc2P’ 选项。这会将任何新文件以“完全不同”的形式放入输出中。此外,补丁的上下文差异头应使用传统的 Unix 格式包含世界标准时间 (Universal Time) 的日期和时间,以便补丁接收者可以使用 GNU patch 的 ‘-Z’ 选项。例如,您可以使用以下 Bourne shell 命令创建补丁:

LC_ALL=C TZ=UTC0 diff -rc2P gcc-2.3.2 gcc-2.3.3 | \
gzip -9 >gcc-2.3.2-2.3.3.patch.gz

如果发布包含子目录,则差异补丁可能包含子目录中的一些文件。为了帮助用户可靠地安装此类补丁,请为他们提供有关如何运行 patch 的精确说明。例如,这样说:

To apply these patches, cd to the main directory of the program
and then use ‘patch -p1’.   ‘-p1’ avoids guesswork in choosing
which subdirectory to find each file in.

通过将您的补丁应用到旧版本的副本,并检查结果是否与新版本完全匹配来测试您的补丁是明智的。


下一主题:,上一主题:,上一级:发布   [目录][索引]