2015-04-07 71 views
2

       在名稱空空格的文件無法在TC構建我這樣的問題發生:TC與上Git項目

[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] 

       因此,這意味着的東西是空白改變文件的路徑字符之一的空格,即%20。
Whek我們在當地嘗試做行家一樣:

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準備工作良好,承諾並推回數據。
       但是teamcity的構建失敗了一次又一次。我們在TC簽出後檢查了代理上的路徑,它不包含任何%20,而是包含空格。所以檢出它沒有這樣的問題。
         我試過一些使用git的實驗,它很好地執行這些文件,我們沒有看到任何問題。

        它是什麼以及如何解決它?這可能是SCM的問題嗎?
P.S.我們在TC內部配置中看不到,因爲沒有訪問權限,只能通過網絡界面。

+0

如果我的建議如下不爲你工作,快速修復可能只是刪除文件的空間。作爲一般規則,我會說不要在文件中放置空格。使用camelCase符號或下劃線。 – Japster24

+0

我們已經考慮過更改名稱,但是項目過於龐大,並且有太多的人在那裏提交,還有一些docs,oracle文件,不僅僅是java,所以這可能會再次發生,TC會失敗。如果不是,我們需要另一個解決方案,然後更改名稱和預先接受的鉤子禁止文件名稱中的空格。 – lummycoder

回答

0

         我們想通了,這就是添加文件時的scm問題。所有文件重命名後,它工作正常。
         另一種方法是添加-DdryRun防止提交和推送更改並調用shell腳本使用相同的命令,但使用普通的git命令。
       如果有人知道另一種方法 - 請寫評論。

+0

您使用的是什麼VCS?我以前在Windows用戶中看到過類似的問題。 – Japster24

+0

Git。這是在描述中。 Git可以很好地處理這些文件,它是maven git scm provider,在這種情況下會失敗。 – lummycoder

0

您可能需要將%teamcity中的%替換爲%%,以便邏輯上使用%符號。所以%% 20可能適合你。

+0

我怎麼能這樣做?有一些配置或通過一些步驟?基本上,Teamcity不會做這樣的事情,只能通過一些插件,觸發器或向某些工具(如git)添加/更改一些參數 - 這就是我的理解。 – lummycoder

1

什麼幫助我的是以下(從https://help.github.com/articles/dealing-with-line-endings/):

取下Git的索引的每一個文件。

git rm --cached -r .

重寫的Git指數拿起所有的新行結束。

git reset --hard

心連心

+0

這也給我修好了。似乎Maven發行版插件在文件包含CRLF行結尾時存在問題。按照這些說明最終幫助:https://help.github.com/articles/dealing-with-line-endings/#refreshing-a-repository-after-changing-line-endings 有趣的是,服務器,詹金斯是運行在認識到比開發機器上的git安裝更多更改的文件(仍在調查其原因)。所以我們最終不得不在那裏結束標準化。 – Christopher