我应该把TeamCity的版本控制系统根目录指向哪里?

20

我正在设置TeamCity,想知道应该使用什么作为版本控制(VCS)根。

我的svn仓库位于http://obfuscatedserver/svn/main/MyProject1/

我应该将VCS Root设置为http://obfuscatedserver/svn/main/MyProject1/,还是使用位于http://obfuscatedserver/svn/main/MyProject1/trunk/的trunk文件夹?

目前我没有使用trunk文件夹,而且我不得不将构建运行程序“构建文件路径”设置为“trunk/MyProject1.proj”(使用msbuild)。

哪个位置是适当的?

3个回答

24

我建议使用http://obfuscatedserver/svn/main/作为版本控制系统根目录,然后使用检出规则来限制检出哪些文件夹。

在构建配置的第二部分中添加以下检出规则:

  +:/MyProject1/trunk

您可能还需要更新msbuild文件的位置

  MyProject1/trunk/MyProject1.proj

并将工作目录设置为

  MyProject1/trunk

虽然这看起来是很繁琐的工作,但下一次您想要添加新构建时,就不需要创建新的版本控制系统根目录了。

然而,真正的好处在于TeamCity轮询您的SVN存储库。轮询存储库一次将发现所有已配置的构建的所有更改。如果您的存储库托管在像sourceforge或googlecode这样的地方,这点尤其重要。您肯定不希望为每个已配置的构建轮询他们的服务器。

另外,如果您的存储库由第三方托管,您可能希望将vcsRoot的检查间隔设置为每小时一次或类似的频率。如果您不想等待一个小时的时间,可以在任何构建概述页面的操作菜单中请求TeamCity检查挂起的更改。


我不得不暂停我们的CI服务器的部署,但一旦我有时间完成它,我会尝试你的建议。 - Pierre-Alain Vigeant
4
您可以在结帐规则中重新映射目标,就像这样:+:/MyProject1/trunk => .。这将将trunk的内容作为构建的根文件夹进行检出,因此msbuild文件的位置只需是 MyProject1.proj。此外,您可以将工作目录留空。 - timomeinen

2

您应该使用... / trunk /,因为这将加快检出速度,否则TeamCity也会获取所有分支,而这些分支可能不需要进行构建。


1
您可以通过修改检出规则来解决获取分支、标签等问题。 - dthrasher

2

目前为止,我一直将../trunk 作为根目录。这样做很好,因为在我的情况下,所有的项目都位于 trunk 目录下,所以可以轻松地进行完整的检出。

但是标记功能无法使用,因为您需要使用类似“trunk => tags”的规则和一个包含这些目录的父级根目录。由于我想标记每个发布版本构建,现在考虑改用与 CrazyCoder 建议的类似布局。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接