45

我的 TeamCity v7.0 构建项目之一依赖于使用当前开发分支和主分支之间的差异来确定需要运行的内容。我写了一个小脚本,它使用类似的东西:

git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles

不幸的是,构建日志表明它git diff不起作用。当我进入该项目的 buildAgent/work 目录时,我看到没有.git文件夹,因此它无法执行所需的 git 操作。

我已经按照TW-15873teamcity.git.use.local.mirrors=true中的说明放入了buildAgent.properties文件,但这似乎没有任何帮助。

我有什么办法可以让我的构建步骤的脚本中两个分支之间的文件列表发生变化?

4

3 回答 3

52

尝试将 VCS 签出模式更改为“始终在代理上签出文件”,如此所述。这应该使构建脚本可以访问 .git 文件夹。

于 2012-07-27T15:43:52.130 回答
7

@Mike Two 的回答是正确的,需要将 VCS 根目录配置为在服务器上的 Agent 上自动使用 Checkout 模式,而不是在服务器上。TC 文档没有提到这个必需的设置默认隐藏为“高级”。所以这里有一张要寻找的图片。

高级设置

仅供参考,我的特定 VS2013 解决方案步骤错误来自 MSBuild,如下所示。我正在使用最新的 TeamCity Enterprise 9.0 EAP(内部版本 31963)。 [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]

//编辑; 我不知道如何将此添加到评论中。

于 2014-12-04T20:11:34.863 回答
0

设置teamcity.git.use.shallow.clone=false并且teamcity.git.fetchAllHeads=true可能是缺少的,至少在最新版本的 TC 上。

于 2021-05-07T22:28:13.673 回答