如何使用SVN管理项目版本?

时间:2012-10-16 17:05:49

标签: delphi svn versioning

Delphi 2007中的项目,存储在SVN中。

“项目设置 - 版本信息” - 存储项目版本。 更改项目版本* .dproj文件和* .res文件时正在更改。 每当项目版本发生变化时,我都必须将它们提交给SVN。

我想用SVN管理项目版本。 例如,当从名为“1.12.2”和版本12993的svn标签构建项目时,我想获得版本为1.12.2.12993的二进制* .exe文件。

为了实现它,我应该创建一个* .rc文件,其中包含版本信息的文本显示。然后创建一个* .res文件并将其包含在{$ R version.res}项目中

我写给* .rc文件的内容是什么?它的结构应该是什么样的? 白色的例子,请。

感谢。

3 个答案:

答案 0 :(得分:5)

VERSIONINFO资源为documented on MSDN。典型的此类资源脚本如下所示:

1 VERSIONINFO
FILEVERSION 1,12,2,12993
PRODUCTVERSION 1,12,2,12993
FILEOS 0x40004L
FILETYPE 0x1L
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "000004E4"
      BEGIN
        VALUE "CompanyName", "My Company\0"
        VALUE "FileDescription", "My Program\0"
        VALUE "FileVersion", "My Program\0"
        VALUE "LegalCopyright", "My Company 2012\0"
      END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x0000 0x04E4
  END
END

答案 1 :(得分:2)

以下是我们的工作方式:

我们有一个专用的构建机器来构建我们的“官方”二进制文件,然后将它们检入svn。然后使用特殊注释标签[添加项目文件] [添加重新文件]将二进制文件以及.res和.bdsproj检入svn。

除非已进行功能更改,否则指示开发人员不检查.bdsproj和.res文件,在这种情况下,他们需要使用特殊标记。

SVN使用预提交挂钩来阻止.res和.bdsproj签名而不使用特殊标记。

当我们创建一个新项目分支时,我们有一个实用程序(我认为它是FindAndReplace.exe),它更新.bdsproj文件中的所有版本信息以匹配。

这并不是您正在寻找的,因为我们没有将SVN构建作为其中的一部分。但这可以做,作为这种方法的延伸。

答案 2 :(得分:2)

我们也使用VERSIONINFO,但是我们使用SVN修订号而不是内部版本号,可以使用SubWCRev实用程序通过关键字替换来提供。有关详细信息,请参阅Tortoise dox。 它允许您从SVN获取与特定.exe

对应的正确的源快照