在CVS中,我们在项目中有多个目录。
有一个每晚构建必须从同一个CVS项目中的不同目录中提取内容,以便构建每晚构建。所以我应该考虑到这一点,如果我们转移到SVN,我必须修改构建脚本以检查不同存储库中的内容。
我阅读了相关的SVN QA,但我有自己的问题,我需要答案
我能做到:
/trunk
/tags
/branches
/3rdparty
我们开发的所有东西都来自/ trunk,而我们不会改变的任何第三方都是/ 3rdparty。
一切都很好,现在每晚构建脚本必须标记主干,签出标签,检查所需的3rdparty内容到正确的目录,然后开始构建过程。
构建结果(编译的东西)可以在NFS挂载上保留一段时间,因此集成团队可以回溯2周并重新创建问题。
我所有的基地都被覆盖了吗?
答案 0 :(得分:9)
SVN红皮书here包含很多关于不同项目类型的布局以及如何管理它们的信息。
您可能还想使用hooks / triggers / externals从名为“第三方”的独立仓库中提取数据。因此,当开发人员检出一个回购时,他也获得第三部分。有很多方法可以分开关注点,但是可以从组件中提供统一的回购。
祝你好运
答案 1 :(得分:2)
可能值得使用像hudson或巡航控制这样的构建引擎。 工作流程略有不同 - 标签是在构建之后制作的,但是您可以获得额外的模块,使您可以对其进行控制。 重点是,所有的开发工作都是为你完成的,你可以为你的夜间构建获得一个不错的框架,你可以获得一个很好的Web界面来控制和监控所有内容。
就个人而言,我在trunk上添加了一些外部定义,以便将相应的第三方库引入适当的位置。这样,当您更改第三方库版本时,您可以对trunk进行更改,而不必修改构建脚本。 这也意味着您可以构建旧版本,只需检查相应的trunk / tag / branch。警告 - 只要在行李箱上做它们,将它们四处散落就可能导致谋杀。
我也会将回购图像分层:
project
/trunk
/branches
/tags
3rdparty
只是因为这为您提供了更多的空间来在某些时候添加更多顶级项目。这样做可以让您完全独立地管理不同的项目 - 如果存在依赖关系,您仍然可以使用外部引用从一个到另一个的正确版本 - 这可以很好地阻止一个项目中的更改默默地打破/更改依赖项目。
使用单独的回购也可以做到这一点,这很好,但在这种情况下,我会将第三方部分从一开始就单独放入一个单独的回购中。
答案 2 :(得分:1)
你为什么不把第三方搬进后备箱?每当你分支第三方副本进入分支机构时。显然你不会改变分支中的第三方内容,因为你的分支已根据现有的第三方内容进行编码。
我不太确定标记你在说什么。这是你的版本号吗?如果是版本号通过脚本并标记构建。
答案 3 :(得分:1)
如果“多个目录”是您想要独立版本的单独组件,那么您应该将每个目录放在自己的存储库中,以便可以单独标记它们。但是,如果这是一个单独的自包含项目(即,如果您通常将所有组件标记和分支在一起),那么您可以将所有代码放在同一个存储库中。
您应该考虑将externals用于第三方工件。
答案 4 :(得分:0)
我的脚本检出trunk,修改文件(调整AssemblyInfo.cs文件中的版本号等),然后标记。如果您不需要以任何方式修改文件,那么首先标记也会很好。
除此之外,你的设置至少听起来不错。