2012-05-15 118 views
1

我的公司即將切換到使用svn,我正在尋找關於倉庫結構的建議。SVN倉庫結構

我們目前有大約10個項目和一些項目使用的一些內部通用軟件商店,有些則沒有。由於通用軟件在內部被修改,所以它本身就是一個項目。因此,雖然項目不相關,但它們可能共享相同的通用軟件。

使用通用軟件的項目通常指的是基線版本,即在任何項目(除通用軟件項目本身之外)下,通用軟件都不會被修改。

那麼每個項目的獨立存儲庫是最好的,通用軟件項目「tagged」版本使用svn:externals掛鉤?

任何意見讚賞。

回答

1

我建議您根據http://svnbook.red-bean.com/en/1.7/svn.reposadmin.planning.html中的第一個示例將所有內容放在一個回購中。 COMMON將成爲所有其他項目的一個項目。

然後,將COMMON的發佈標籤複製到每個項目,反映每個項目當前正在使用的COMMON的版本。

佈局例:

/common 
    /branches 
    /common_improvements1 
    /common_improvements2 
    /tags 
    /common-1.0.0 
    /common-1.0.1 
    /trunk 
/projA 
    /branches 
    /stable-1.0 
     /common (=copy of /projA/[email protected] =copy of /common/tags/common-1.0.0) 
    /stable-2.0 
     /common (=copy of /projA/[email protected] =copy of /common/tags/common-1.0.1) 
    /projA_ongoing_fix_branch 
    /tags 
    /1.0.1 
    /1.0.2 
    /1.1.0 
    /2.0.0 
    /2.0.1 
    /trunk 
    /common (=copy of /common/tags/common-1.0.1) 
/projB 
    (similar structures) 
/projC 
    (similar structures) 

優點:

  1. COMMON之間方便地訪問和可追溯性和項目
  2. 如果有用的話,用戶可以方便地互動,測試和支持對方的努力
  3. COMMON發佈標籤的副本回答了這個問題:我們目前在該項目中使用了哪個版本的COMMON?
導入期間

可選步驟:

你有所有項目的共同佈局的今天,如服務器上的文件結構還是其他版本控制系統?如果是這樣,我建議您:

  1. 將整個佈局導入到新存儲庫中的文件夾,例如,/根/ old_layout
  2. 移動項目文件和文件夾到新的佈局,SVN回購

這樣做的好處是,修訂日誌回答這個問題裏面:如果是這樣的文件,在我們以前的結構?在向開發人員教授新結構以及臨時資源(例如顧問)在佈局更改後回來時,這可能非常有用。

+0

感謝你的幫助! 這是一個理想的結構,並會爲我們工作。 我唯一的疑問就是關於在每個項目中使用通用軟件的副本。 我們目前的通用軟件倉庫(或VOBS,因爲我們正在從clearcase轉換)是相當大的(高達1GB)。因此,在每個項目中複製副本可能會很快耗盡服務器磁盤並影響性能? – user1395416

+0

通過在每個項目中使用COMMON發佈標籤的副本,你的意思是一個實際的副本,或者是他們使用鏈接的任何智能方式 - 我已經聽說過SVN外部用於此目的,但也讀過一些關於它們的壞消息。而且,隨着SVN的新公司的出現,他們更願意採用最簡單的解決方案! – user1395416

+0

svn回購站中的所有副本都是智能鏈接,因此發佈標籤的副本只會將少量鏈接信息添加到存儲庫。 –

0

所有開發人員都可以在所有項目上工作嗎?或者每個開發人員只會在特定的項目上工作?

如果前者我會考慮將每個項目作爲分支(因爲在分支之間切換比在存儲庫之間切換更容易)。您也可以非常方便地爲新項目創建新分支。

如果後者然後單獨回購可能更乾淨,更容易管理。

+0

謝謝。每個開發人員將在特定的項目上工作。所以我希望當他們連接到項目資源庫時,他們會將Project X視爲頂級文件夾,COMMON將包含到該項目所需通用軟件的外部鏈接。可能使用COMMON導出,因爲它不應該在該項目下被修改? – user1395416

+0

如果您希望projectX成爲最高級別,那麼爲每個項目使用單獨的回購將實現該目標。有很多預先提交選項取決於你想鎖定COMMON的數量,但這取決於個人喜好/你相信你的開發者多少;) –

0

不使用單獨的存儲庫,把它放在一個(SVN可以非常愉快地處理非常大的回購)。這將爲您在未來共享您的通用代碼和分支帶來益處。

不同之處在於它只是一個額外的「目錄」。好處是更少的維護和更容易的訪問。