2011-08-19 118 views
1

我是SVN新手,所以請原諒我,如果我在這裏說絕對垃圾。SVN Externals - Checkout整個項目或部分

什麼,我想實現的是以下幾點:

我想在我的項目中的兩個庫:供應商和本地。

供應商回購將包含我正在使用的框架的源代碼,本地回購將包含在框架內運行的所有本地代碼。我還應該注意到,我的本地源代碼將通過符號鏈接與供應商交叉。

我想讓我的存儲庫分開存放,我希望能夠檢查我的本地存儲庫並在不檢出整個項目的情況下對其進行檢查。雖然有時整個項目將不得不結賬。

理想我需要能夠檢出,工作並提交到以下幾點:

  1. 本地代碼只
  2. 供應商代碼僅
  3. 聯合供應商和本地代碼的

SVN外部是否允許這種行爲?如果不是,那麼最好如何實現呢?

+0

基於文件或目錄的符號鏈接?基於目錄的sylinks可以轉換爲svn:externals。 – Robert

+0

目錄和文件符號鏈接。將主要目錄 – David

回答

1

我看不出有什麼理由使用svn:externals來解決您的問題。如果你需要做的就是檢查出不同的項目,你可以組織你的資料庫,像這樣:

/ 
    local/ 
     branches/ 
     tags/ 
     trunk/ 
    vendor/ 
     <vendor-specific project structure> 

當你需要你的本地代碼,運行svn co <server>/local/<branch>當你需要你的供應商代碼運行svn co <server>/vendor/<whichever resource(s) you need>。有什麼我錯過了嗎?

0

SVN外部將允許你1)和2)。對於3),您將不得不執行多個提交命令 - 每個修改的存儲庫上都有一個。

但腳本很容易(至少在linux上)。另一方面,我建議你在不同的級別上與你的供應商集成 - 例如,在java中,通過在你的服務器上構建JAR實現單獨的回購和集成會更好。

0

通過分離您的本地和供應商存儲庫,您無法通過簡單的步驟檢出整個項目(本地+供應商)。我想你只有一個存儲庫,包括你的本地和廠商的源代碼。現在您可以:

1)爲您的本地目錄定義外部函數,以便在簽出時獲取供應商代碼。 (滿足項目1)

2)爲供應商目錄定義一個外部函數,以便在簽出時獲取本地代碼。 (項目2滿意)

3)如果你想簽出你的本地和供應商的源代碼,這只是檢查你的根(/ trunk)文件夾。(項目3得到滿足)

如果你仍然堅持有兩個獨立的倉庫,項目1和2很容易被外部滿足。對於第三項,您可以編寫一個簡單的腳本來檢查您的本地+供應商代碼到您的工作文件夾中。