在git项目中,TC无法处理名称中包含空格的文件

在git项目中,TC无法处理名称中包含空格的文件,git,teamcity,maven-release-plugin,maven-scm,Git,Teamcity,Maven Release Plugin,Maven Scm,在TC构建期间,我遇到了这样的问题: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.1:prepare (default-cli) on project test-project: An error occurred during the status check process: Exception while executing SCM command. Error while

在TC构建期间,我遇到了这样的问题:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.1:prepare (default-cli) on project test-project: An error occurred during the status check process: Exception while executing SCM command. Error while executing command. Error inside systemOut parser: Illegal character in path at index 0: "java/releases/13.4.1/Prod/SomeFile%2013.1.1.docx" -> [Help 1]
这意味着某些东西正在将带有空格的文件路径更改为字符1,即%20。
当我们在本地尝试在maven做同样的事情时:

mvn -B release:clean release:prepare release:perform -DreleaseNumber=1.1.0 -DBUILD_VERSION=1.1.0.6 -Dsomeuser | tee ~/3.1.0.6.log
它在一些随机开发环境中表现良好,在TC代理环境中也表现良好
另一点:我尝试过scm:添加这样的文件,但它禁止这样做,所以我认为是这样,但mvn prepare工作得很好,提交并将数据推回。
但teamcity build一次又一次地失败。我们在TC签出后签出了代理上的路径,它不包含任何%20,而是包含空间。因此,它的性能不会出现这样的问题。
我用git做了一些实验,它可以很好地执行这些文件,我们没有发现任何问题

可能是什么以及如何解决它?可能是scm的问题吗?

另外,我们无法看到TC内部配置,因为它没有访问权限,只能通过web界面访问

您可能需要将teamcity中的任何%替换为%%,以便在逻辑上使用%符号。所以%%20可能适合你

我们发现,这是scm在添加文件时遇到的问题。重命名所有文件后,它工作正常
另一种方法是添加-DdryRun,以防止提交和推送更改,并使用相同的命令调用shell脚本,但使用常见的git命令。

如果有人知道另一种方法,请写评论

帮助我的是以下内容(来自):

从Git的索引中删除每个文件

git-rm--cached-r.

重写Git索引以获取所有新行结尾

git重置——硬


hth

如果我下面的建议对您不起作用,快速修复方法可能是删除文件中的空间。一般来说,我会说不要在文件中放空格。使用camelCase符号或下划线。我们考虑过更改名称,但项目太大,有太多人在其中提交,还有一些文档、oracle文件,而不仅仅是java,所以这种情况可能再次发生,TC将失败。我们需要另一个解决方案,如果没有,那么就更改名称,并在预接收钩子上禁止名称中有空格的文件。我怎么做?是否有一些配置或通过某些步骤?基本上,Teamcity不会做这样的事情,只是通过一些插件、触发器或向某些工具(如git)添加/更改一些参数——这就是我的理解。你在使用什么VCS?我以前在WindowsUsers.Git的SVN中也看到过类似的问题。这是在描述中。Git可以很好地处理这些文件,它是maven Git scm提供程序,在这种情况下会失败。这也为我修复了它。如果文件包含CRLF行结尾,maven版本插件似乎有问题。遵循这些说明最终有所帮助:有趣的是,jenkins运行的服务器识别出的更改文件比开发机器上的git设置多得多(仍在调查原因)。因此,我们最终不得不在那里完成这一行。