在Windows服务器和Mac代理使用服务器检出模式时,如何阻止TeamCity将符号链接转换为文件?

Law*_*ton 15 macos teamcity continuous-integration symlink

我们正在从CC/CC.NET到TeamCity的组合.

我们产品的核心是Windows,但我们有一个Mac代理.

我们将VCS结帐模式设置为"自动在服务器上".这意味着将在(Windows)服务器上签出源,然后根据需要将其复制到代理(包括Mac代理).

我们的产品使用BWToolkit框架作为其UI的一部分.这意味着我们将框架存储在源代码管理中.

问题是来自TeamCity服务器的源副本搞砸了框架目录中的符号链接.这导致我们的产品无法构建(error: BWToolkitFramework/BWToolkitFramework.h: No such file or directory).

这是ls -l根框架目录中的内容在我的机器上的显示方式:

total 24
lrwxr-xr-x  1 myuser  admin   35 Nov 22 10:45 BWToolkitFramework -> Versions/Current/BWToolkitFramework
lrwxr-xr-x  1 myuser  admin   24 Nov 22 10:45 Headers -> Versions/Current/Headers
lrwxr-xr-x  1 myuser  admin   26 Nov 22 10:45 Resources -> Versions/Current/Resources
drwxr-xr-x  5 myuser  admin  170 Nov 22 10:45 Versions
Run Code Online (Sandbox Code Playgroud)

这就是它在构建机器上的外观:

total 24
-rwxrwxr--  1 root  admin   40 Nov 19 16:21 BWToolkitFramework
-rwxrwxr--  1 root  admin   29 Nov 19 16:21 Headers
-rwxrwxr--  1 root  admin   31 Nov 19 16:21 Resources
drwxrwxr--  4 root  admin  136 Nov 19 16:21 Versions
Run Code Online (Sandbox Code Playgroud)

此外,它们不是在构建机器上显示为链接(图标上的小箭头覆盖),而是显示为带有unix可执行文件图标的文件.如果您打开其中一个应该是链接的文件,您将获得类似于以下内容的文件(这来自BWToolkitFramework链接):

link Versions/Current/BWToolkitFramework
Run Code Online (Sandbox Code Playgroud)

这似乎是TeamCity中服务器检出选项的一个问题,因为CruiseControl在同一台机器上运行直接SVN检出,我没有遇到任何问题.

除了更改我们的TeamCity配置以在客户端选项上使用SVN checkout之外,还有什么办法可以解决这个问题吗?

Law*_*ton 14

我将此问题提交为TW-14499,希望得到官方的回复/解决方案.

It was just marked as a duplicate of TW-5953 Symlinks are not supported for SVN server-side checkout, so this is a known issue that's been open about 2 years. If anybody else runs into it please vote for/comment on the issue in hopes that it will get fixed.


ken*_*yee 6

显然,jgit已于2014年12月4日修复此问题,因此TeamCity最终会解决此问题.解决方法是告诉TC使用客户端代理进行git检查. 在此输入图像描述