Jenkins git checkout中出现“文件名过长”错误

17
在Jenkins中使用Git checkout时,会出现“文件名过长”的错误导致失败,如下所示:

hudson.plugins.git.GitException: 命令“git.exe checkout -f 2cea7d8eb9185899c01d2ffc86872f584da2e60c”返回状态码1:

stdout:
stderr: error: unable to create file 一些较长的项目名称/src/test/resources/dbunit_test_data/com/一些较长的目录名称/data/testInstances_create_dataRequiresData.xml: Filename too long

我已经按照这里(Git for Windows中的文件名太长)和这里(Git文件名太长错误)的建议将配置文件中的longpaths变量设置为“true”,但没有帮助。是否还有其他解决方法?
4个回答

17
为了使Git正确处理长文件名, 需要启用core.longpaths=true.设置该参数可按以下方式完成:
git config --global core.longpaths true

1
Jenkins作业配置中的“为运行准备环境”复选框添加了预检步骤。 - klapshin
@klapshin 我看到那个部分,但是这要在哪里和怎样添加呢? - Will Lanni

6
Saikat的这个回答对我修复了Jenkins git checkout的问题。

遵循以下步骤(Windows):

  1. 管理员身份运行 Git Bash
  2. 运行以下命令:

git config --system core.longpaths true

注意: 如果第2步不起作用或产生任何错误,您还可以尝试运行此命令:

git config --global core.longpaths true

此处阅读更多关于 git config 的信息。

(编辑:请注意有一个相关答案建议将设置应用于受影响的项目,而不是使用 --system--global 标志。)


5
如果你使用的是Windows 10家庭版,你可以更改注册表以启用长路径。
在“regedit”中转到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem”,然后将“LongPathsEnabled”设置为“1”。
如果你使用的是Windows 10专业版或企业版,则还可以使用本地组策略。
在“gpedit.msc”中前往“计算机配置 > 管理模板 > 系统 > 文件系统”,打开“启用Win32长路径”并将其设置为“已启用”。

2

为了解决这个问题,我在jenkinsfile脚本中定义了一个WORKSPACE路径的虚拟驱动器:

bat 'subst W: /d || exit 0' //delete the virtual drive if it already exists 
bat 'subst W: "%WORKSPACE%"' 

然后再将其删除:

bat 'subst W: /d'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接