Jenkins git checkout 中的“文件名太长”错误
Posted
技术标签:
【中文标题】Jenkins git checkout 中的“文件名太长”错误【英文标题】:"Filename too long" error in Jenkins git checkout 【发布时间】:2017-12-26 14:42:32 【问题描述】:Jenkins中的Git checkout抛出错误“Filename too long”,失败,如下:
hudson.plugins.git.GitException:命令“git.exe checkout -f 2cea7d8eb9185899c01d2ffc86872f584da2e60c”返回状态码1:
标准输出: 标准错误:错误:无法创建文件 some_long_named_project/src/test/resources/dbunit_test_data/com/some_long_named_directory/data/testInstances_create_dataRequiresData.xml: 文件名太长
按照Filename too long in Git for Windows 和https://sifaserdarozen.wordpress.com/2015/06/25/git-file-name-too-long-error/ 的建议,我已将配置文件中的 longpaths 变量设置为“true”,但没有帮助。
还有什么我可以做的吗?
【问题讨论】:
【参考方案1】:This answer by Saikat 为我解决了 Jenkins git checkout 的这个问题。
要遵循的步骤(Windows):
以管理员身份运行Git Bash 运行以下命令:
git config --system core.longpaths true
注意:如果第 2 步不起作用或出现任何错误,您也可以尝试运行此 命令:
git config --global core.longpaths true
阅读更多关于
git config
here的信息。
(编辑:请注意,related answer 建议将设置专门应用于受影响的项目,而不是使用 --system
或 --global
标志。)
【讨论】:
【参考方案2】:为了让 Git 正确处理长文件名,需要启用 core.longpaths=true
。要设置此参数,您可以执行以下操作:
git config --global core.longpaths true
【讨论】:
Jenkins 作业配置中的“为运行准备环境”复选框添加了预签出步骤【参考方案3】:如果您运行 Windows 10 家庭版,您可以更改注册表以启用长路径。
转到regedit
中的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
,然后将LongPathsEnabled
设置为1
。
如果您有 Windows 10 专业版或企业版,您还可以使用本地组策略。
在gpedit.msc
中转到Computer Configuration > Administrative Templates > System > Filesystem
,打开Enable Win32 long paths
并将其设置为Enabled
。
【讨论】:
【参考方案4】:作为一种解决方法,我在 jenkinsfile 脚本中为 WORKSPACE 路径定义了一个虚拟驱动器:
bat 'subst W: /d || exit 0' //delete the virtual drive if it already exists
bat 'subst W: "%WORKSPACE%"'
然后删除它:
bat 'subst W: /d'
【讨论】:
以上是关于Jenkins git checkout 中的“文件名太长”错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用管道代码覆盖默认的 Jenkins Git 插件检出?
git checkout之一 HEAD基本和detached 状态