我想在我的应用程序中显示当前提交号。我使用 SVN,我的代码是 C#。
我想知道我是否可以自动更新存储库内的文本文件,以便它包含一个提交号,例如,将其显示给用户。
目前我正在考虑制作一个提交后挂钩(一个接收多个包含提交信息的环境变量的 shell 脚本)并将提交号“回显”到该文本文件中。干扰服务器端存储库中的文本文件是否有效?
还有其他存储版本号的方法吗?我知道 SVN 可以修改某些关键字的源代码,但是我需要提交这些文件才能进行修改。我希望能够始终更新该修订号,而不是在我提交特定文件时。
您要显示的不是提交号,而是修订号。
检查svn info
在存储库中输出最新修订号的命令。您可以让您的应用程序发布svn info
以了解最新的 repo 修订号。
如果您使用 c#-code,您使用 Windows,是吗?!在这种情况下,除了svn info
必须预先解析输出以供使用之外,您可以考虑使用SubWCRev(TortoiseSVN 的一部分),它将带有SubWCRev-keywords 的版本化模板文件转换为未版本化的数据文件,其中关键字被来自 repository-info 的实际数据替换
看看svn:keywords。您可以放入$Revision$
您的文件,如果您为该文件设置了 svn:keywords,Subversion 会将修订号添加到该字符串。
从:
Revision = $Revision$
到:
Revision = $Revision: 12343$
这表明该文件是在修订版 12,343 中提交的。
正如大卫指出的那样,您可以使用 svn "$Revision$" 关键字。当然,这将告诉您该特定文件最后更改的版本。
要了解项目中的整体最新版本,您可以使用svnversion
命令行工具。在 之后svn update
,您将始终有一个数字(但这将是整个存储库的 HEAD 修订版);使用-c
or--commited
开关,first:last
几乎可以肯定你会得到一个范围,但之后:
你会得到你项目的主要版本。