2009-01-15 81 views
2

我每天更新代码并在每种情况下提交所有更改,以便始终在服务器上提供新代码。软件版本自动化

我想简化的是构建自动化和版本控制。目前,我建立一个项目并在每次老板需要时编辑它的名称版本(项目名称vx.x.x),这是不符合时间效率的。

有没有人知道什么是最好的方式来保持最新的软件版本与相应的版本号一直可用?

对于开发我使用VS 2008和颠覆乌龟SVN。我尝试使用nant进行buid自动化,但没有任何经验,不知道如何在VS中编辑版本号或传递Tortoise的修订版号以便它可以生成带有版本号的项目名称。

谢谢!

回答

3

首先,不要试图用SVN keyword substitution来做到这一点。如果将$ rev $关键字放入文件中,并使用svn:keywords属性启用关键字替换,则不会得到您想要的结果。您将获得影响包含关键字的文件的最新修订版本,而不是影响项目任何部分的最新修订版本。

正确的方法是使用svnversion命令的输出。您可能需要编写一个调用此命令的小脚本,捕获输出,然后使用修订号来更新项目文件或源代码文件。

如果你可以依靠TortoiseSVN的安装,更简单的方法是使用SubWCRev.exe效用是这样的:

SubWCRev.exe . VersionInfo.template VersionInfo.cs 

其中VersionInfo.template是这样的一个C#项目:

using System.Reflection; 

[assembly: AssemblyVersion("2.0.0.$WCREV$")] 
[assembly: AssemblyFileVersion("2.0.0.$WCREV$")] 

警告:windows版本号由4个数字组成,每个数字限制为16位。 Subversion版本号很容易变得比这更大。

0

我正在自动化这个自己的过程。还在探索的选项,但是这似乎是简单可靠:

  • 创建一个“实用”项目全球VC++ 6.0的工作空间内被称为“_FULL_BUILD_”。

  • _FULL_BUILD_没有自己的文件,但它依赖于所有其他项目,确保它们全部得到(重新)建立适当。

  • 一个早期的依赖是使用sed.exe从http://sourceforge.net/projects/unxutils增加版本,存储在自己的文件中的另一个实用项目,如必要的:

    • 建立调试,只是增加了版本号。
    • 对于发布版本,增加版本号的最后部分。
    • 主要/次要版本需要手动编辑。

“魔术师”是空的实用项目,还允许您创建自定义构建(例如)可能将整个项目复制到滴点为您的QA团队的规则。

如果您找到更好的解决方案,请让我们知道。

祝你好运!

3

使用颠覆版本号不是最优的。我试过一次,但失败了,因为更改集号只与在特定更改集中更改的文件相关。

无论如何,我会建议使用CruiseControl,因为它能够跟踪与颠覆分开的内部版本号。 CC将一些属性传递给构建脚本,其中之一是构建标签,名为“$ {label}”。在你的脚本中使用它。

投入时间学习(n)蚂蚁和CC。