我正在使用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启动构建时,我得到的文件名太长了错误。我重新启动机器(关闭然后再打开),仍然没有骰子。
答案 0 :(得分:0)
您需要为TeamCity服务和代理创建用户,然后将这两个服务更改为在该用户下运行。接下来使用该用户登录Windows,然后运行git config命令。或者弄清楚如何为" core.longpaths"
设置全局选项答案 1 :(得分:0)
通常,在代理计算机上运行git config --system core.longpaths true
应该足够了-它会在系统范围内(而不是按用户)设置配置。
这可能不起作用的原因之一是,Teamcity Agent使用与命令行不同的git实例(来自不同路径的git.exe)。您可以强制Teamcity使用同一实例:
which git
。或者,运行git config --system --edit
并检查编辑的配置文件的位置。