2010-07-01 68 views
1

我們正在開發一個由大量項目,組件和庫組成的大型軟件項目。我們的管理層已經決定,每次部署時都必須保存整個系統的快照,因此當出現問題時,我們可以輕鬆獲得整個系統的確切版本。通常的解決方案是在每次部署後分支項目。順便說一句,我們正在使用VS2008C#SVN。但是這對於大量的子項目和庫也是不實際的,這些子項目和庫也有它們的版本並被修改。如何使用大量庫管理CVS中的軟件版本

解決此問題的一個答案是具有向後兼容性並始終修復中繼版本的問題,但在我們的情況下,將無法測試系統的更改(軟件是ITS系統,一旦系統被部署,我們不能做任何更多的集成測試)。

而且更糟糕的是,out deploments是模塊化的,所以每次部署不同的組件組合時,都會有本地化。

您如何解決這些問題?有什麼工具可以幫助嗎?

回答

0

我曾經在這樣的項目上工作。

我們用來分支每個發佈候選版本,並將應用於RC分支的錯誤修正報告到主幹上。這並不是很方便,但是我們找不到一個像樣的選擇,直到我們決定將這個工程分成許多由類似maven的系統管理的小型可愛項目。

也許使用與強大的測試例程相關的持續集成管理工具也可能有所幫助。

1

你可以使用像ivy這樣的依賴關係管理系統 - 它基本上保留了你正在使用的每個dll的每個版本的記錄。

作爲一個(非常)簡要的概述,當您進行構建時(例如使用nant),您可以使用ivy來解決所有的依賴關係,從而獲得您需要的特定版本的dll。由於常青藤配置將在svn中,如果您拿出較舊版本的代碼,您還會獲得較舊版本的ivy配置。

+0

這可以用於SVN嗎?常青藤能夠從SVN獲取特定版本的依賴關係嗎? – rusbi 2010-07-01 07:56:23

+0

是的,但通常ivy不會從svn檢索到東西,你會有一個常青藤資源庫 - 就像存儲dll的共享位置一樣。例如,log4net可能是一個依賴項(不在svn中),但是位於Ivy倉庫中的X:\ ivy \ log4net \ v1.2.10 \等等。版本號存儲在項目的ivy配置文件中,所以當你得到一個較舊版本的代碼時,你也會得到一個老版本的ivy配置。當常青藤解決依賴關係時,它可以獲得所需的dll的確切版本。 – 2010-07-01 08:15:22