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

通过TeamCity使用Git的长文件路径,git,teamcity,Git,Teamcity,我将TeamCity与Git一起使用,并尝试在单个代理上执行Git签出(这是CI管道的一部分,在某个时候必须切换分支,因此我需要工作文件夹中的正确Git文件) 在我们的存储库中,我们有很长的文件名,这些文件名通常太长,Git无法处理。这些是NPM模块,此时无法从源代码管理中删除。如果您在一台干净的机器上签出存储库,您将得到类似以下的错误 无法在“***/node_modules/grunt autoprefixer/node_modules/autoprefixer/node_modules/f

我将TeamCity与Git一起使用,并尝试在单个代理上执行Git签出(这是CI管道的一部分,在某个时候必须切换分支,因此我需要工作文件夹中的正确Git文件)

在我们的存储库中,我们有很长的文件名,这些文件名通常太长,Git无法处理。这些是NPM模块,此时无法从源代码管理中删除。如果您在一台干净的机器上签出存储库,您将得到类似以下的错误

无法在“***/node_modules/grunt autoprefixer/node_modules/autoprefixer/node_modules/fs extra/node_modules/rimraf/node_modules/glob/node_modules/brace extension/node_modules/balanced match/test”处创建目录:文件名太长

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

git config--system core.longpaths true

然后一切都是美好的

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

git配置--列表

我可以看到长路径已启用。当我在那台机器上使用git进行签出时,我还可以很好地下载存储库


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

您需要为TeamCity服务和代理创建一个用户,然后将两个服务都更改为在该用户下运行。下次使用该用户登录Windows,并运行git config命令。或者了解如何设置“core.longpaths”的全局选项一般来说,在代理计算机上运行
git config--system core.longpaths true
就足够了-它设置系统范围内的配置(而不是每个用户)

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

  • 从命令行检查git.exe位置:运行
    哪个git
    。或者,运行
    git config--system--edit
    并检查已编辑配置文件的位置
  • 将TeamCity配置为从该路径使用git:

  • 请确保在运行TeamCity代理的用户下启用了长路径。此外,我还要检查代理上是否有多个git版本:如果TeamCity使用一些旧版本,那么长路径可能无法工作。如果没有帮助,请检查错误是git命令导致的还是TeamCity抛出的,如果是后者,请使用stacktrace提供完整错误(如果有)。