2010-12-01 92 views
3

我們有一個相當大的庫,我們需要定期導入(然後打補丁)到我們的代碼庫。SVN:供應商分支機構+修補程序+歷史記錄?

SVN書似乎推薦一個「供應商分支」計劃,在那裏我們保留我們修補版的「供應商下降」。這將起作用,除了供應商也使用SVN並且讓我們讀取他們的reop。

當我們需要更新我們的補丁時,能夠訪問供應商文件的歷史將是一件非常好的事情。

所以我的問題是:

有沒有辦法有一個補丁「賣主分支」也不知何故保持訪問歷史記錄的供應商檔案?

(我見過提及svn:外部文件夾,但我不確定我是否真的瞭解掛鉤修訂的完整分支,以及我們如何維護自己的修補程序。)

什麼是正確的路線? (FWIW,供應商發佈每月一次。我們打算去拉一次左右/每年兩次更新)。

感謝

+0

這不是你所期望的答案,但是(即使我真的很喜歡svn),如果你期望與分支機構密切合作,那麼SVN對你來說可能不是一個好的決定。我建議你去看看Mercurial或GIT Mercurial更簡單,我將它用於我的私人項目,而GIT更強大。 – zerkms 2010-12-01 05:46:23

+1

@zerkms是的,可悲的是,SVN是一個「業務需求」。在這件事上沒有選擇。 – nonot1 2010-12-01 05:57:25

回答

2

好了,這裏有個致命的,你要供應商的來源與歷史一起,但你也將您的補丁應用到供應商的來源。讓他們的歷史來源很容易。通過歷史獲取他們的源代碼,然後應用您的補丁程序並持續執行此操作,這很困難。

現在,假設您沒有將供應商的源目錄放入源代碼中(這意味着您需要單獨構建兩個項目),如果將兩個源保存在單獨的存儲庫中,則有多個選項。

如果您希望供應商的源代碼和歷史記錄一起使用,您可以爲供應商資源庫設置svnsync並定期提取其更改。 Svnsync是一種以完整的歷史記錄作爲本地副本遠程獲取某些內容的絕妙方式。但是,svnsync的一個警告是,存儲庫變爲只讀。所以你不能將補丁應用到它們的源代碼中。

現在,由於您每年只進行一次或兩次這樣的操作,因此您可以使用svnsync通過下拉他們存儲庫的新副本的過程。打破同步並使供應商的回購副本可寫,然後應用您的修補程序。

另一種選擇是讓供應商做他們的回購轉儲並將其發送給您。然後,您會將該轉儲加載到您自己的存儲庫中並進行讀取/寫入。

無論選擇哪種方式,每次執行此過程時都必須將補丁重新應用到供應商存儲庫的副本。至少你一年只做一次或兩次。

現在,如果您必須在源代碼中使用它們的源代碼,請執行上述操作,但是請使用像您在問題中提到的svn:external。您仍然需要將您需要對供應商源提供的任何補丁應用到供應商存儲庫的副本中。

相關問題