为相关文件中的新版本提供版本号(文档)

我会有兴趣知道你在那里如何处理新版本问题的版本号。

如何处理相关文件(如手册页等)中的版本号

该软件是用gnu工具链构build的,所以autoconf,automake等等可用于应用程序的版本号。 这样的信息可以被重复使用。

git被用作vcs。

一种可能性是在Makefile.am中引入一个额外的新目标,该目标执行sed / awk来replace所有关联文件中的版本号和date。 这个目标可以在新版本开发的开始(分支之后)被调用一次。

然后,项目可以build立正确的信息时,人们会做项目的git克隆或释放tarball完成。 当然,开始开发新版本时,必须记得运行这个目标。

另一个select是用dist钩子来执行sed / awkreplace。但是这会让项目的git仓库处于一种状态,没有正确的版本号码与关联的文件相关联。

我更喜欢做第一个解决scheme,因为它也logging了git历史中的正确版本号。

在进行sed / awkreplace时,你更喜欢使用“in-file”还是使用autoconf / automake工具中的模板in-file。 我看到两种方法的优点和缺点。

你如何处理关联文件的版本控制 。 在开发阶段开始的时候是否改变它们,在出货之前是否改变它们,你们是做replace还是更喜欢使用模板?

谢谢。

Solutions Collecting From Web of "为相关文件中的新版本提供版本号(文档)"

我认为这样做的标准方法是使用Git的钩子系统和m4或sed / awk按照您的建议进行搜索/替换。 你只需要在每个文件的注释中(可能在标题中)使用一个特殊的标记。

以下是关于githooks的参考资料,以下是解决相同问题的人写的几页:

这两者都依赖于将版本号存储在源代码树某处的文件中。

我也遇到了一个被称为0release ,声称自动发布创建(和设置版本号)。

最后,关于发行版本号,还有其他几个问题:

现在常见的解决方案是用m4_esyscmd参数调用AC_INIT来从git生成VERSION。 例如,autoconf的configure.ac包含行:

 AC_INIT([GNU Autoconf],
         m4_esyscmd([build-aux / git-version-gen .tarball-version]),
         [bug-autoconf@gnu.org])

build-aux / git-version-gen是一个简单的脚本,它调用'git describe'来生成版本号。 (见gnulib)

这种方法存在缺陷,但它可能是有效的。

我们使用经典的major.minor.patch系统,它被用来释放候选人作为一个“标签”,我们有一个脚本标签提交作为版本号,而不是使用一个“标签对象”的git。 所有的版本编号都是“手动”完成的。 它的工作原理合理,因为版本号是由“发布到脚本”脚本创建的,这在开发过程中很晚。 我们不打扰使用任何的git钩子,因为我们并不需要,如果一个提交没有离开开发环境,那么除了它的内部SHA代码之外,它不需要id。

我们试图强制每个“补丁”版本必须与具有相同主要次要标签的其他版本二进制兼容。

这样,任何带有标签的东西都应该至少可以构建,但是可能或很可能不能用于规范。

一个改进就是让质量保证部门在“质量保证”批准的任何东西上创建一个签名标签对象,但现在我们依靠其他文书工作。