2012-07-24 41 views
38

我的TeamCity v7.0构建项目之一依赖于使用当前开发分支和主分支之间的差异来确定需要运行的内容。我已经写了使用类似于一个小的脚本:在TeamCity构建步骤中使用git命令

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

不幸的是,生成日志表明git diff不工作。当我进入该项目的buildAgent/work目录时,发现没有.git文件夹,因此无法执行所需的git操作。

我已将teamcity.git.use.local.mirrors=true置于文件中,如TW-15873所述,但这似乎没有任何帮助。

有什么我可以做的,以获得我的构建步骤脚本中的两个分支之间更改的文件列表?

+1

这是否有解决方案?我也有使用TeamCity 8.1的困难。我正在使用VCS结帐模式“自动在代理上”,但这似乎没有帮助。 .git目录仍然丢失。 – user24601 2015-12-23 18:30:54

回答

45

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

+3

这让我有一部分的方式,但做起始/主和当前分支之间的差异不起作用。相反,它似乎只能识别本地或远程的SINGLE分支!我认为TC正在做一些有趣的事 - 克隆一个克隆或者一些不寻常的东西。 “git fetch”会抛出一个错误,即使当前repo在buildAgent/work/blah中,buildAgent/system/git/git-14CE2659.git似乎不是git存储库。 – 2012-08-20 19:39:19

+1

谢谢!这回答了我有一个问题:http://stackoverflow.com/questions/17555931/how-do-i-get-teamcity-to-create-the-git-directory-when-cloning-a-repo-for-build – 2013-07-09 19:39:32

+0

不幸的是,如果你需要ssh认证访问,例如为了将更改推送到远程git仓库,它不起作用,因为TeamCity在提取后擦除ssh项。 https://confluence.jetbrains.com/display/TCD9/SSH+Keys+Management – 2015-11-24 15:05:23

7

@Mike Two的回答是正确的,需要配置VCS根目录以在代理上自动使用签出模式 - 不在服务器上。技术委员会没有提到这个必需的设置默认隐藏为“高级”。所以这里是一个寻找什么的图片。

Advanced Settings

FYI,来自MSBuild的我的具体VS2013解步骤误差,如下。我正在使用最新的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]

// edit;我不知道如何将其添加到评论中。

相关问题