在关联文件中记录新版本的版本号(文档)

f.e*_*.co 9 linux version-control build-automation gnu autotools

我将是你知道如何在那里办理兴趣碰撞的版本号为新版本问题.

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

该软件使用gnu工具链构建,因此autoconf,automake等可用,并用于应用程序的版本号.这样信息就可以重复使用了.

git用作vcs.

一种可能性是在Makefile.am中引入一个额外的新目标,它使用sed/awk来替换所有相关文件中的版本号和日期.该目标可以在开发新版本时(在分支之后)调用一次.

然后,当人们进行项目的git克隆或者发布tar tar时,项目可以使用正确的信息构建.当然,在开始开发新版本时,必须记住运行此make目标.

另一个选择是使用dist目标的钩子进行sed/awk替换.但这会使项目的git存储库处于没有正确版本号与关联文件关联的状态.

我更喜欢做第一个解决方案,因为它还在git历史记录中记录了正确的版本号.

在进行sed/awk替换时,您更喜欢"在文件中"或使用autoconf/automake工具中的模板文件.我看到两种方法的优点和缺点.

你如何处理相关文件的版本控制.您是否在开发阶段开始更改它们,是否在发货前更改它们,是否更换了infile或者您更喜欢使用模板?

谢谢.

Wil*_*ell 10

现在常见的解决方案是使用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)

这种方法有缺点,但它可能是有效的.


Dan*_*ane 6

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

这里是关于githooks的参考资料,这里是人们解决同一问题的几页:

这两者都依赖于将版本号存储在源树中的某个文件中.

我还遇到了一个名为0release的声明,声称自动创建发布(并设置版本号).

最后,关于版本号,这可以在其他几个问题中解决: