5

我想知道在推送应用程序的实时新版本时如何处理显示版本号?

您可以$Rev$在文件中使用以获取最新版本,但只能在更新文件之后使用。

如果每次更改存储库/目录中的任何文件时都想更新一个文件中的字符串怎么办?

有办法吗?

4

6 回答 6

8

最好的方法是为版本创建一个构建脚本,该脚本将使用svnversionor确定修订号svn info并将其插入文件中。拥有一个脚本总是有帮助的:

  1. 将源代码的干净副本检出到空目录中
  2. 使用svnversion或类似的东西来计算内部版本号
  3. 将源码编译成产品
  4. 创建产品的存档(zip 或 tarball 或其他)
  5. 清理:删除除存档之外的所有内容

然后,您可以通过一个步骤创建具有易于识别的版本的版本。它还可以帮助您避免从您自己的工作副本中向他人提供构建,其中可能包含从未签入源代码控制的更改。

于 2008-09-20T10:49:43.037 回答
3

TortoiseSVN 中有一个名为SubWCRev.exe的简单工具。它从路径中进行修订并从您自己的模板创建文件。您可以将其用作预构建命令。

于 2008-09-20T13:58:22.130 回答
2

你试过用钩子吗?它们仅在服务器端工作,但可能会奏效。否则,如果关键字不适合您,我只会调用脚本更新修订。

于 2008-09-20T10:32:34.187 回答
2

作为构建/部署版本的一部分自动更新文件。

于 2008-09-20T10:37:51.957 回答
1

在我有理由这样做的一个项目中,我作弊了:它svnversion在启动时会调用自己。

于 2008-09-20T10:38:04.220 回答
1

正如亚历山大所说,一种方法是将修订作为构建过程的一部分进行更新。

执行此操作的一种方法是使用buildbot等工具从版本控制签入触发的自动构建过程中获取发布构建。

一个场景可能是使用 subversion 存储库上的 post-hook 脚本触发自动构建。这会导致您的 buildbot 更新到最近签入的修订版。您的构建脚本(例如 Makefile)将使用“svnversion”(或“svn info”和 grep)来读取存储库修订版并将其写入头文件,然后再进行构建。

成功构建后,自动将此文件检入到存储库中,并带有有关发布版本的适当注释。

于 2008-09-20T10:56:32.397 回答