subversion存储库布局遵循/trunk/branches/…模式,所以我们有:
/trunk
/branches/stable-20100716
/branches/stable-20111231
/branches/stable-20110401
/branches/specialversion
/tags/some-tag
然后,我们有一个构建服务器,可以构建主干和当前的稳定版本。
问题是:构建服务器如何找到当前的稳定版本?我们在windows环境中使用CruiseControl (java版本)和ant进行构建过程。但是,subversion服务器是linux。
在CVS中,我们会使用标记。这是我第一次在subversion中丢失标签。我可以标记分支,但为了使标记保持最新,我必须在每次提交到当前稳定版本时删除/添加标记。也许提交钩子可以帮上忙,但是有没有更简单的解决方案来实现自动化呢?(也许没有学习windows脚本主机之类的?)为每个新的稳定版本在构建服务器上添加一个新项目是可能的,但这相当复杂且容易出错…
也许你可以创建一个符号链接,使/branches/stable-version重定向到你的上一个稳定分支(手动操作,但在每个新的稳定分支创建时只做一次)。因此,您的存储库看起来像这样:
/trunk
/branches/stable-20100716
/branches/stable-20111231
/branches/stable-20110401
/branches/specialversion
/branches/stable-version # symbolink link to stable-20111231
/tags/some-tag
最简单的解决方案似乎是重命名您的稳定目录。如果你只有一个稳定的当前版本,那么你应该只有一个稳定的目录。
如果您需要保留最近的3或4个稳定版本,请设置3或4个稳定目录并为每个目录设置一个Cruisecontrol项目。
如果您希望构建机器自动构建具有最新日期的版本,并将其用作"稳定"构建,那么您可能需要对CruiseControl配置文件进行一些神奇的操作。可能在项目配置中使用动态值。
http://www.cruisecontrolnet.org/projects/ccnet/wiki/Dynamic_Values