在SVN中创建具有内部版本号和分支名称的文件

时间:2009-07-01 14:07:35

标签: svn deployment build-automation

目前我工作的部署控制并不多。虽然有一个长期计划来创建一个构建脚本来处理部署,我们现在只是发布我们的解决方案,然后将它们复制到服务器。

有一个类似于包含修订号和分支名称的文本文件或类似物,作为当前系统上当前运行的版本的日志,这将非常有用。

是否可以使用SVN挂钩或Visual Studio中的简单后期构建脚本来执行此操作?

7 个答案:

答案 0 :(得分:4)

以下是我如何做到的完整细分

在您网站的根目录中创建一个名为Version.txt的空白文本文档。

在您网站的根目录中创建第二个文本文档,名为Version.tmpl,内容如下:

Revision:   $WCREV$
Repository: $WCURL$
Modified:   $WCMODS?Yes:No$
Built On:   $WCNOW$

右键单击您的网站项目,然后选择属性。然后转到构建事件选项卡。

将以下内容粘贴到您的帖子构建事件中:

cd $(ProjectDir)
"%ProgramFiles%\TortoiseSVN\bin\SubWCRev.exe" ..\. Version.tmpl Version.txt

这将使用Version.tmpl作为模板更新Version.txt文件,其中包含有关工作副本的一些详细信息。 Version.txt现在包含在您的网站中这一事实意味着每次部署网站时,Version.txt也会被部署,并且如果您需要将代码库恢复到已部署的版本,它将包含有用的信息。

答案 1 :(得分:0)

svnversion是用于检查工作副本的当前修订版的工具。

答案 2 :(得分:0)

在Windows上,您有Subwcrev

答案 3 :(得分:0)

您可以使用构建脚本来执行此操作。查看存储库根目录中的.svn \ entries文件。它应该在文件的早期(第5行左右)包含修订号

答案 4 :(得分:0)

您可以使用此代码从vb获取信息。我使用这个重写版本在app启动时找到这些信息。

http://www.codeproject.com/KB/architecture/svn_visual_studio.aspx

答案 5 :(得分:0)

我使用ant作为构建工具,所以我有一个ant目标,它将svnversion的输出存储在文件svn-version中。该目标是所有主要入口点的依赖项,因此每次运行ant时,都会更新svn-version。我的包装操作包括所有可交付的tar和zip文件中的svn-version。所以我总是可以查看svn-version来找出已安装的代码版本。

无论您使用什么构建工具,您都应该能够做到这一点。如果来自svnversion的数据不够,您可能还想将svn info的输出添加到文件中。

答案 6 :(得分:0)

我还使用Ant并开发了一个special Task,它能够从本地存储库(如果代码已签出)或远程Subversion服务器(如果代码已导出)中检索Subversion信息,并且通过常规的Ant属性使它们可用。

使用Ant替换机制(例如,在“复制”任务中),您可以将这些值放在您认为合适的位置。