通过TeamCity使用Git的长文件路径

时间:2016-04-14 22:29:17

标签: git teamcity

我正在使用TeamCity和Git并尝试在单个代理上执行git checkout(这是CI管道的一部分,必须在某个时刻切换分支,所以我需要在工作文件夹中使用正确的Git文件) 。

在我们的存储库中,我们有很长的文件名,通常太长,Git无法处理。这些是NPM模块,此时无法从源控制中删除。如果在干净的计算机上签出存储库,则会出现类似于以下内容的错误。

  

无法在'**** / node_modules / grunt-autoprefixer / node_modules / autoprefixer / node_modules / fs-extra / node_modules / rimraf / node_modules / glob / node_modules / minimatch / node_modules / brace-expansion / node_modules / balanced中创建目录-match / test':文件名太长

在开发者计算机上本地克隆repo时,您必须调用

  

git config --system core.longpaths true

然后一切都很美好。

在TeamCity构建代理上,我也做了同样的事情。当我打电话

  

git config --list

我可以看到长路径已启用。当我在该机器上使用git进行结账时,我也可以下载存储库。

但是,当我从TeamCity启动构建时,我得到的文件名太长了错误。我重新启动机器(关闭然后再打开),仍然没有骰子。

2 个答案:

答案 0 :(得分:0)

您需要为TeamCity服务和代理创建用户,然后将这两个服务更改为在该用户下运行。接下来使用该用户登录Windows,然后运行git config命令。或者弄清楚如何为" core.longpaths"

设置全局选项

答案 1 :(得分:0)

通常,在代理计算机上运行git config --system core.longpaths true应该足够了-它会在系统范围内(而不是按用户)设置配置。

这可能不起作用的原因之一是,Teamcity Agent使用与命令行不同的git实例(来自不同路径的git.exe)。您可以强制Teamcity使用同一实例:

  1. 从命令行检查git.exe的位置:运行which git。或者,运行git config --system --edit并检查编辑的配置文件的位置。
  2. 配置TeamCity以从以下路径使用git:https://confluence.jetbrains.com/display/TCD18/Git#Git-Gitexecutableontheagent