7

我目前正在設置工作中的持續集成環境。我們正在使用VisualSVN服務器和CrusieControl.NET。偶爾構建會失敗,並且症狀是CruiseControl.NET工作副本中存在衝突。我相信這是由於我設置了Visual Studio解決方案的方式。希望我們在這個環境中運行的項目越多,我們對如何設置它們的理解就越好,所以我並不質疑爲什麼在這個階段發生衝突。爲了修復版本,我刪除了工作副本並強制執行一個新版本 - 每次(當前)都有效。所以我的問題是:刪除工作副本是持續集成構建過程的有效部分,我該如何解決?預生成任務 - 刪除CruiseControl.NET中的工作副本

我試過解決方案,包括MSTask和調用命令行刪除,但我沒有任何運氣。

抱歉這麼羅嗦 - 好工作,這是一個測試版:)

+0

Subversion的CleanCopy現在在版本1.4.1中實現。您只需在您的配置中將CleanCopy設置爲true – Alex 2008-11-19 18:55:37

回答

9

在構建之前或之後進行完全刪除是一種很好的做法。這意味着您的構建環境沒有機會獲取過時的文件。您的建築物完全針對存儲庫中的內容。

刪除工作副本是可能的,因爲我已經用Nant做過了。

在南特我會有一個乾淨的腳本在自己的文件夾中,我想刪除一個,然後從CC.net中調用它。

我認爲這應該也可以使用批處理文件。看看rmdir命令http://www.computerhope.com/rmdirhlp.htm

@pauldoo

我喜歡我的CI服務器做一個完全刪除,因爲我不希望任何驚喜,當我去做一個發佈版本,這應該總是做從一個乾淨的狀態。但它應該能夠處理兩者,沒有理由爲什麼不可以

0

這是很常見的,一般對於任何構建過程做任何顯著構建之前做一個「乾淨」的一個很好的做法。這可以防止以前的構建中的任何「工件」污染輸出。

清理本質上就是通過刪除工作副本來完成的。

0

@Brad巴克

清潔手段,剛擦了構建產品。

刪除工作副本會刪除所有其他東西(源文件和項目文件等)。

一般來說,如果您的機器可以在不進行完全刪除的情況下運行,那很好,因爲這複製了一般開發人員的工作。它在更新期間發現的任何衝突都是對開發人員可以期望的事情的早期警告。


@jamie

正式版本是的,它是更好地做一個完全乾淨的檢出。所以我想這取決於構建的目的。

2

@jamie:有一個原因,您可能無法在每次使用持續集成服務器時進行清理構建 - 構建時間。在我工作的一些項目中,清理版本需要80多分鐘(一個由數千個C++文件組成的嵌入式項目,用於檢出並針對多個目標進行編譯)。在這種情況下,您必須權衡快速反饋的好處,以及乾淨構建會捕獲增量構建不會構建的東西的可能性。在我們的案例中,我們致力於改進和平行構建過程,同時允許在CI機器上增量構建。我們確實遇到了一些問題,因爲我們沒有進行乾淨的構建,但通過每晚或每週做一次乾淨的構建,您可以消除風險,而不會丟失CI機器的快速反饋。

2

如果您檢查CC.NET的jira有一個補丁簽入來爲Subversion實現CleanCopy,它完全符合您的要求,並且只需在您的源代碼管理塊中將CleanCopy設置爲true,就像使用TFS一樣。