我每天更新代码并在每种情况下提交所有更改,以便始终在服务器上提供新代码。
我想简化的是构建自动化和版本控制。目前,每次老板需要时,我都会构建一个项目并编辑它的名称版本(项目名称vx.x.x),这不是时间有效。
有谁知道保持最新软件版本以及始终可用的相应版本号的最佳方法是什么?
对于开发,我使用VS 2008和颠覆Tortoise SVN。我尝试使用nant进行buid自动化,但没有任何使用经验,也不知道如何在VS中编辑版本号或将Tortoise的修订号传递给nant,以便它可以生成带有版本号的项目名称。
谢谢!
答案 0 :(得分:3)
使用颠覆版本号不是最佳选择。我尝试了一次,但它失败了,因为更改集编号仅与该特定更改集中更改的文件相关。
无论如何,我建议使用CruiseControl,因为它能够跟踪与subversion分离的内部版本号。 CC将一些属性传递给构建脚本,其中之一是构建标签,称为“$ {label}”。在你的nant脚本中使用它。
投入时间学习蚂蚁和CC。
答案 1 :(得分:3)
首先,不要尝试使用SVN keyword substitution来执行此操作。如果将$ rev $关键字放在文件中并使用svn:keywords属性启用关键字替换,则无法获得所需内容。您将获得影响包含关键字的文件的最新修订,而不是影响项目任何部分的最新修订。
执行此操作的正确方法是使用 svnversion 命令的输出。您可能需要编写一个调用此命令的小脚本,捕获输出,然后使用修订号在某处更新项目文件或源代码文件。
如果您可以依赖TortoiseSVN安装,更容易的选择是使用 SubWCRev.exe 实用程序,如下所示:
SubWCRev.exe . VersionInfo.template VersionInfo.cs
对于C#项目,VersionInfo.template看起来像这样:
using System.Reflection;
[assembly: AssemblyVersion("2.0.0.$WCREV$")]
[assembly: AssemblyFileVersion("2.0.0.$WCREV$")]
警告:Windows版本号由4个数字组成,每个数字限制为16位。 Subversion版本号很容易变得更大。
答案 2 :(得分:0)
我正在自动化这个过程。仍在探索各种选择,但这似乎简单可靠:
在全局VC 6.0工作区中创建名为“_FULL_BUILD_”的“实用程序”项目。
_FULL_BUILD_没有自己的文件,但它取决于所有其他项目,确保它们都得到(重新)正确构建。
一个早期的依赖项是另一个实用程序项目,它使用http://sourceforge.net/projects/unxutils中的sed.exe来增加版本,并根据需要存储在自己的文件中:
“魔术”是空的实用程序项目,它还允许您创建自定义构建规则(例如)可以将整个项目复制到QA团队的丢弃点。
如果您找到更好的解决方案,请告知我们。
祝你好运!