2009-07-17 130 views
6

在CVS中,我們在項目中有多個目錄。 有一個每晚構建必須從同一個CVS項目中的不同目錄中提取內容以構建夜間構建。所以我應該記住這一點,如果我們轉向SVN,我必須修改構建腳本以檢查不同存儲庫中的內容。

我讀了相關的SVN QA,但我有我自己的問題,我需要答案。
我可以這樣做:
SVN佈局 - 最佳實踐

/trunk 
/tags 
/branches 
/3rdparty 

當我們發展一切出來的/軀幹和我們不改變任何的3rdParty的去/的3rdParty。

一切都很好,現在每晚構建腳本必須標記trunk,簽出標籤,檢查所需的第三方東西到合適的目錄中,然後開始構建過程。
構建結果(編譯過的東西)可以在NFS掛載一段時間,因此集成團隊可以返回2周並重新創建問題。

我的基地都覆蓋了嗎?

回答

9

SVN紅皮書here包含了大量關於不同項目類型佈局的信息以及如何管理它們。

您可能還想使用hooks/triggers/externals從獨立的倉庫中獲取數據,這個倉庫叫做'第三方'。所以當開發人員檢查一個回購時,他也得到第三部分。有很多方法可以將問題分開,但是會從組件中提出統一的回購。

好運

+1

+1將第三方組件保存在單獨的回購站中。 – 2009-07-18 01:30:52

+0

我可能已經在書中看到了一些關於發佈分支的內容,如果你能指出它到底是什麼,它將是一個不錯的選擇。謝謝 – pal4life 2013-10-31 14:33:14

0

我的腳本檢查了後備箱,修改文件(AssemblyInfo.cs中文件等調整版本號),然後標記,。如果您不需要以任何方式修改文件,那麼首先標記也會很好。

除此之外,您的設置至少對我來說聽起來不錯。

+0

必須引用第三方以外的基本文件夾不是一個好主意。我會在trunk \ lib下創建一個文件夾,並將所有第三方的東西放在那裏。這樣你可以避免引用到你的基地之外。 IMGLO – 2009-07-17 18:04:05

1

爲什麼不把第三方移動到主幹?當你分支第三方的副本進入分支時。很明顯,你不會在第三方中改變第三方的東西,因爲你的分支已經基於現有的第三方東西進行了編碼。

我不太確定你正在標記你在說什麼。這是你的版本號嗎?如果是通過腳本傳遞版本號並標記構建。

1

如果「多個目錄」是您想要獨立版本的獨立組件,那麼您應該在自己的存儲庫中分別安裝每個組件,以便它們可以分別進行標記。但是,如果這是一個單獨的獨立項目(即,如果您通常將所有組件標記並分支到一起),那麼您可以將所有代碼放在同一個存儲庫中。

您應該考慮使用externals作爲第三方工件。

2

它可能是值得使用像hudson或巡航控制構建引擎。 工作流程略有不同 - 標籤是在構建之後製作的,但您可以獲得額外的模塊,以便您對其進行一些控制。要點是,所有的開發工作都是爲你完成的,而且你爲每晚的構建獲得了一個體面的框架,並且你可以獲得一個漂亮的Web界面來控制和監視所有事情。

就個人而言,我把樹幹上的一些外部定義適當的第三方庫,以拉入適當的地方。這樣,當您更改第三方庫版本時,可以將更改更改爲中繼,而不必修改構建腳本。 這也意味着你可以構建舊版本只是檢查出適當的中繼/標籤/分支。被警告 - 只要在樹幹上做它們,散佈它們可能會導致謀殺。

我還層回購有點像:

project 
/trunk 
/branches 
/tags 
3rdparty 

很簡單,因爲這給你更多的機會在某些時候增加更多的頂級項目。這樣做可以讓你完全獨立地管理不同的項目 - 而且如果存在依賴關係,仍然可以使用外部引用將正確的版本從一個引用到另一個 - 這很好地阻止了一個項目中的變更,從而悄悄地破壞/更改依賴項目。

這是可能做到這一點使用單獨的回購協議爲好,這是很好的,但在這種情況下,我把的3rdParty部分分成從一開始就是獨立的回購。