当使用不属于同一文件夹的多个存储库时,无法正确配置teamcity与mercurial一起使用

当使用不属于同一文件夹的多个存储库时,无法正确配置teamcity与mercurial一起使用,mercurial,teamcity,Mercurial,Teamcity,我正在尝试设置TeamCity构建服务器。我也在使用mercurial存储库 我的项目结构是: Main Folder -Windows Form Application Repository -Class library 1 Repository -files subrepo 1 -files subrepo 2 -files subrepo 3 -Class library 2 Repository 我在teamcity中创建了一个项目,在没有指定签出目录的情

我正在尝试设置TeamCity构建服务器。我也在使用mercurial存储库

我的项目结构是:

Main Folder
 -Windows Form Application Repository
 -Class library 1 Repository
    -files subrepo 1
    -files subrepo 2
    -files subrepo 3
 -Class library 2 Repository
我在teamcity中创建了一个项目,在没有指定签出目录的情况下将3个VCS添加到项目中,结果是所有3个存储库中的文件都位于一个签出目录中,导致生成错误。 然后,我将每个VCS的签出目录更改为C:\Projects。这导致了一个正确的文件夹结构,但其中没有文件(就好像hg pull操作完成了,但hg更新没有完成一样)


有没有人有过类似的经历,因为我找不到任何人抱怨这种情况。

您应该能够使用根文件夹中的一个.hgsub来完成所有这一切,它将自动引入所有其他回购协议。您应该在TeamCity中有一个从根目录中提取的VCS根目录。

您可以为每个存储库设置签出规则。窗体的签出规则

+:.=>subdir
将存储库的所有内容签出到指定的子目录(请参阅 详细信息)

据我所知,您的“类库1存储库”有3个子存储库。目前,服务器端签出不支持子存储库,代理端签出不支持签出规则(下面是一个值得投票/关注的问题)

作为一种解决方法,您可以为每个子存储库创建单独的VCS根目录,但在本例中,TeamCity将签出存储库的最新版本,而不是跟踪的提交源
.hgsubstate。

这意味着我必须为每个配置创建一个新的存储库,并设置其他存储库提交该存储库以触发VCS构建触发器。如果主文件夹位于存储库中,其他文件夹作为子存储库,则所有这些都可以正常工作。仅当您特别决定从subrepo进行更新时,Main才会更改。如果您编辑subrepo和commit并使用TortoiseHG推送根目录,它也会推送subrepo并更新hgsubstate以反映这一点。目前,主文件夹不是一个存储库,而是一个简单的文件夹。创建一个主存储库只是为了让构建服务器感到高兴,这对我来说似乎是一个很大的开销,因为我必须同步修改不同的存储库版本并将其提交到主存储库,以便构建服务器将检测VCS更改。由于它支持每个配置有多个存储库,我不知道为什么需要一个存储库,如果只是更新功能通过所有连接的VCS传播,带来文件,而不仅仅是拉取更改,一切都将是danty。我刚刚发现了结帐规则解决方案,并返回这里发布答案,但你抢先告诉了我。谢谢。