我剛剛在我們公司爲我們的Visual Studio項目引入了SVN,並創建瞭如下所示的存儲庫(「解決方案」是Visual Studio解決方案,包含1..n個項目):SVN Visual Studio存儲庫的工作目錄結構
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
現在,我有兩個選擇構建本地工作目錄:
選項A:讓每一個單獨的解決方案使用AnkhSVN的用戶結賬,導致結構是這樣的:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/solution3/projectD/...
/solution4/projectE/...
/projectF/...
或此,如果我告訴用戶手動創建一個子目錄customerX:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
/customerX/solution4/projectE/...
/projectF/...
優勢:用戶可以只檢出,他真正需要的解決方案。缺點:每個解決方案都需要單獨檢查/更新。
選項B:告訴用戶結帳使用TortoiseSVN是整個倉庫,導致這是完全一樣的存儲庫的結構:
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
優勢:它很容易爲「SVN更新一切」。缺點:用戶還擁有所有分支機構和標籤的本地副本。
問題:由於一些項目的解決方案(比方說,例如,該了projectA是也使用solution3庫),我們需要修復一個目錄結構,以確保共享的相對路徑在解決方案文件中是正確的。你推薦哪個選項,爲什麼?
編輯:感謝您的所有優秀的答案,特別是提svn:externals
和強調一個好的庫設計的重要性。我結束了更新我的庫結構:
/trunk/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
-svn:external to projectA
/solution4/projectE/...
/projectF/...
從而確保工作solution3 開發商只需要檢查solution3(而不是解決方法1)和解決方案可以簽出到任何目錄即,工作目錄不需要固定的結構。
好的問題,順便說一句... – David 2009-11-02 15:38:01