2017-01-20 51 views
0

我有一些項目和他們在SVN倉庫中使用的框架;我們稱之爲存儲庫A。現在我想與另一個團隊在另一個SVN倉庫上分享這個框架(我們稱之爲B),但是我希望承諾B的框架的所有更改也可以在A上使用。保持*兩個SVN倉庫的*部分同步

當然,我可以不時檢查服務器B上的新增內容,更新,將其複製到服務器A的工作副本並在那裏提交。但我更願意保留所有的歷史記錄(應該不是問題,因爲提交的作者顯然只是一個名稱字符串),而且我寧願在某人在服務器B(在框架的目錄中)提交時自動執行此操作。

注意:與此同時,服務器A及其項目及其框架的版本過着自己的生活。總而言之,這有點像分支機構,但在不同的存儲庫上,A到B應該像合併一樣,但是B到A最好保留更改的歷史記錄。

可以嗎?我怎樣才能做到這一點?

回答

1

你這裏有兩種選擇:

  1. 不要複製/同步A的內容在所有的B。相反,使用svn:externals將合適的項目從A中抽取出來,從B中檢出工作副本。這樣做,您不會將代碼從A複製到B,並且每次從B檢出/更新WC時,都會有的從A「最新」
  2. 使用svnsync以選擇性地同步庫A的部分,以存儲庫B.從manual

對於Subversion 1.5,svnsync的也有鏡像的一個子集的能力一個存儲庫而不是整個事物。設置和維護這種鏡像的過程與鏡像整個存儲庫的過程完全相同,除了在運行svnsync init時不指定源存儲庫的根URL,而是指定該存儲庫中某個子目錄的URL。同步到該鏡像現在將只複製在該源存儲庫子目錄下更改的位。但是,這種支持有一些限制。首先,您不能將源存儲庫中的多個不相交的子目錄鏡像到單個鏡像存儲庫中,而是需要鏡像某些通用的父目錄。其次,過濾邏輯完全基於路徑,因此如果您正在鏡像的子目錄在過去的某個時間點被重命名,則鏡像將僅包含修訂版,因爲該目錄出現在您指定的URL上。同樣,如果源子目錄將來被重命名,那麼您的同步過程將停止在您指定的源URL不再有效的位置處鏡像數據。

+0

我沒有注意到我可以定義外部引用另一個存儲庫!這很好,但是......我將如何處理訪問?這兩個存儲庫必須具有相同的帳戶 - 或者,至少我應該放棄B隊成員可以用來訪問服務器A上的共享代碼的帳戶... – Simone

+1

是的,用戶需要訪問這兩個存儲庫(賬戶不一定要有相同的名稱或密碼)。不要爲所有用戶提供一個「共享」帳戶來與外部人員一起使用。您如何管理這取決於您如何設置認證和授權。 – alroc

+0

使用svnsync,相反,我不會讓B的用戶在A上進行身份驗證,對不對? – Simone