2011-06-02 93 views
3

我有一個目錄在我的Subversion存儲庫中,我想用外部存儲庫的內容替換。所以在我的倉庫中,路徑是/ toplevel/sites/foo。我想從外部存儲庫中取出foo。我可以通過在svn:externals on/toplevel/sites中添加「foo http://other-repository.com/path/to/foo」來實現。但是,這使得無法直接簽出/頂層/站點/ foo。你必須檢查/頂層/網站,讓foo被遞歸拉。在/頂層/站點有東西,所以這是不理想的,我們經常有工作人員只在一個/頂層/站點上工作。svn:外部替換子目錄

我的第二次嘗試是在toplevel/sites/foo中創建一個空目錄,並直接將svn:externals屬性添加到foo。這可以讓你checkout/toplevel/sites/foo,但它最終將外部事物INSIDE,所以得到的路徑是/ toplevel/sites/foo/foo。我只想要一個富。

我該如何設置,以便您可以只拉/頂級/網站/ foo,而不是其他任何東西?

編輯:我已經通過創建一個空的foo目錄並將遠程存儲庫中的所有頂級目錄添加到foo的svn:externals中來工作。這有點醜,但幸運的是沒有那麼多頂級實體。如果可能的話,我仍然希望找到一種方法讓它不用那麼做。

回答

0

呃,實際上剛剛檢出http://other-repository.com/path/to/foo某處?我不知道其他方式。如果您在適當的地方需要它,您當然可以將它移動到目錄中,該目錄先前用svn co --depth=empty簽出。

+0

我猜我沒說清楚。我想要「svn co http://myrepository.com/toplevel/sites/foo」通過拉入http://other-repository.com/path/to/foo來工作。它沒有。它說沒有這樣的URL http://myrepository.com/toplevel/sites/foo – jsd 2011-06-02 18:20:17

+0

我知道你想要什麼,但這不能以另一種方式/直接完成。外部不是別名或類似的東西,並且處理客戶端,而不是服務器端。也許有人制作了自定義的服務器端代碼,但我對此表示懷疑。至於svn-server知道,你的'foo'目錄不存在,只有客戶端讀取目錄的道具並發現一個外部。 – Wrikken 2011-06-02 18:22:26

0

你確實可以使用svn:externals來檢出多個不同的目錄甚至完全不同的存儲庫。

從svn書(http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html);

Subversion提供了對外部定義的支持。外部定義是將本地目錄映射到版本化目錄的URL(最好是特定修訂版本)。在Subversion中,使用svn:externals屬性聲明外部定義。您可以使用svn propset或svn propedit創建或修改此屬性(請參閱「操作屬性」一節)。它可以在任何版本化的目錄中設置,其值描述了該位置應該檢出的外部存儲庫位置和客戶端目錄。

svn:externals屬性的便利之處在於,一旦將它設置在版本化的目錄中,那些簽出該目錄的工作副本的所有人都將獲得外部定義的好處。換句話說,一旦一個人努力定義嵌套的工作副本結構,其他人就不必費神 - Subversion在檢出原始工作副本後,還會自動檢查外部工作副本。