2015-11-02 55 views
1

首先,如果有任何重複的問題,我會道歉。我確實嘗試(一點)找到它,但沒有成功。SVN將基本代碼分支到更新的項目中

場景:

說你寫你自己的PHP框架(如你做的),並且因爲它代表它是沒有範圍外殼(因爲它應該是)。然後你有一個項目只是在這裏和那裏添加一些文件,以使你的魔法發生,對吧?

我有倉庫A(框架),其中包含所有我的車輪重塑革命性的源代碼。我希望存儲庫B(項目)應該包含完整的框架(也許是Repo A的一個分支)以及使這個奇蹟發生的少數項目文件。我想回購B到一起回購一所作的任何修正更新,但該項目的任何更改僅限於回購B(所以不承諾A)

我最初的想法:

使用分支創建一個框架的副本,然後添加我的項目文件而不打算合併。問題在於分支不會更新副本之後所做的任何更改,因爲SVN計劃稍後合併更改。我也嘗試在一個文件夾(checkout repo A)和另一個文件夾(checkout repo B)中保存框架,但這不是一個好的解決方案,因爲這意味着我不能使用1個大文件夾。

我實際的問題:

有沒有一種方法,我可以得到一個存儲庫擴展(僅更新)另一個倉庫,或以這樣的方式,該支拷貝(項目)將繼續跟蹤分支它被複制後的修訂版本。

需要明確的是:

  1. 我不想在子文件夾分開回購例如Symfony的 使用SRC/A和src/B和供應商/ C等

  2. 我我意識到衝突,因爲項目可能在這裏和那裏覆蓋框架文件。這將歸結爲盡職調查時,解決任何變化

  3. 「只使用git」不是一個答案。我有SVN服務器花了幾周時間來安裝和更改,這將是一場噩夢,所以不是一個選項。

我的設置: 我在Windows和SVN使用龜都在我的本地開發的網絡Linux操作系統。回購服務器是遠程的,在CentOS 6上運行SVN 1.5.2(如果你問我爲什麼是1.5.2,你最好擱置3小時)

我真的很希望我在SVN世界失去了一些東西。我只有幾次分支,所以希望我只是不知道我在做什麼,有人可以說「這裏,啞巴屁股」。任何反饋非常讚賞,歡呼。

回答

1

如果你覺得你的通用代碼,如果它是第三方代碼,那麼什麼你描述聽起來像顛覆Vendor Branch strategy(與實際上不是SVN專用)

從SVN文檔:

此問題的解決方案是使用供應商分支機構。供應商分支是您自己的版本控制系統中的目錄樹,其中包含由第三方實體或供應商提供的信息。您決定吸收到您項目中的供應商數據的每個版本稱爲供應商下降。

供應商分支機構提供兩個好處。首先,通過將當前支持的供應商刪除存儲在您自己的版本控制系統中,確保項目成員不需要質疑他們是否擁有正確版本的供應商數據。他們只是收到正確的版本作爲其常規工作副本更新的一部分。其次,因爲數據存在於您自己的Subversion存儲庫中,所以您可以將自定義更改存儲到現有位置 - 您不再需要自動(或更差,手動)方法來交換自定義設置。

但是,您也可以考慮像處理第三方庫或包一樣管理泛型代碼。這樣做可以讓您使用其他軟件包管理工具 - 而不僅僅是源代碼管理系統。例如,考慮Composer

+0

感謝Jared的材料,我之前看到過這個,但是當我看到我的分支沒有收到更新時,我完全懷疑分支,會給它一個閱讀,看起來很有希望,所以在你的回答中這是一個過早的接受:) – Prof83