3

我想在我的应用程序中显示当前提交号。我使用 SVN,我的代码是 C#。

我想知道我是否可以自动更新存储库内的文本文件,以便它包含一个提交号,例如,将其显示给用户。

目前我正在考虑制作一个提交后挂钩(一个接收多个包含提交信息的环境变量的 shell 脚本)并将提交号“回显”到该文本文件中。干扰服务器端存储库中的文本文件是否有效?

还有其他存储版本号的方法吗?我知道 SVN 可以修改某些关键字的源代码,但是我需要提交这些文件才能进行修改。我希望能够始终更新该修订号,而不是在我提交特定文件时。

4

4 回答 4

2

您要显示的不是提交号,而是修订号

检查svn info在存储库中输出最新修订号的命令。您可以让您的应用程序发布svn info以了解最新的 repo 修订号。

于 2012-10-23T15:18:45.587 回答
1
  1. 您不必在存储库中拥有具有全局修订号的附加文件,因为存储库已经具有此元信息
  2. 不能(也不能真的)在 post-commit 钩子中修改存储库
  3. 您只能在构建阶段获得 RevID(“构建”可以是从 repo、编译等简单导出)并写入一些未版本化的源代码

如果您使用 c#-code,您使用 Windows,是吗?!在这种情况下,除了svn info必须预先解析输出以供使用之外,您可以考虑使用SubWCRev(TortoiseSVN 的一部分),它将带有SubWCRev-keywords 的版本化模板文件转换为未版本化的数据文件,其中关键字被来自 repository-info 的实际数据替换

于 2012-10-23T15:40:40.280 回答
1

看看svn:keywords。您可以放入$Revision$您的文件,如果您为该文件设置了 svn:keywords,Subversion 会将修订号添加到该字符串。

从:

 Revision = $Revision$

到:

 Revision = $Revision: 12343$

这表明该文件是在修订版 12,343 中提交的。

于 2012-10-23T16:37:47.270 回答
0

正如大卫指出的那样,您可以使用 svn "$Revision$" 关键字。当然,这将告诉您该特定文件最后更改的版本。

要了解项目中的整体最新版本,您可以使用svnversion命令行工具。在 之后svn update,您将始终有一个数字(但这将是整个存储库的 HEAD 修订版);使用-cor--commited开关,first:last几乎可以肯定你会得到一个范围,但之后:你会得到你项目的主要版本。

于 2019-11-14T10:29:13.547 回答