在git项目中,TC无法处理名称中包含空格的文件
在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
[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设置多得多(仍在调查原因)。因此,我们最终不得不在那里完成这一行。