如何管理 SVN 标签中的修订编号?

How to manage revision numbering in a SVN tag?

我想知道如何处理我的软件项目中的RN(修订号)。 RN 放在一个单独的头文件中,并显示在关于视图中,看起来像这样:v1.23.456

通常我会像这样创建标签:

1.通过以下方式创建标签:

svn copy http://myrepo/trunk http://myrepo/tags/1.23.456 -m"Tagged version 1.23.456"

2。查看标签并编辑 RN:

svn co http://myrepo/tags/1.23.456
gedit revisionNumber.h

3。签入修改后的RN:

svn ci revisionNumber.h -m"Adadpted RN"

--> 编辑标签是一个糟糕的解决方法。但我不知道另一种管理注册护士的方法。所以我的问题是:

如何在 SVN 标签中管理修订编号?

一种可能的解决方案是使用 gedit revisionNumber.h 编辑版本并在 标记您的版本之前将此更改提交到主干

对正在进行的工作使用一些 -dev 或 -nightly 标签,例如 1.23.456-dev。从版本中删除 -dev 并在准备就绪时标记您的版本。

顺便说一句,请查看 Apache Subversion 项目的 Making Subversion Releases 指南。它可能会为您提供更多信息,并可能会回答您的其他问题。

您可以选择两种方法之一,具体取决于您构建已发布软件的方式。

手动 post-提交执行

  1. 在标记之前提交 revisionNumber.h
  2. 写一个 post-commit 只允许在 revisionNumber.h 正确(匹配标签)的情况下制作标签。您可以使用 svnlook catgrep.
  3. 在 post-commit 钩子中实现它

这种方法的缺点是您仍然需要在两个地方更新修订号,但是 post-commit 钩子至少可以确保您不会搞砸。

构建机器人

这仅适用于具有构建机器人或构建过程的情况。

  1. 要创建标签,请对标签文件夹使用 svn copy 命令。
  2. 编写一个 post-commit 钩子来观察这个文件夹并启动构建,为构建提供标签。
  3. 构建机器人更新 revisionNumber.h 并生成构建。

在这种方法中,revisionNumber.h 永远不会在您的存储库中更新,因此版本号在大多数情况下可能无效。如果您的代码依赖于修订号(即,它不是仅用于显示),这可能不是一个好的解决方案。