2010-05-04 50 views
2

我爲我的主頁使用腳本,但我想本地化它。此外,CSS使用不適合我的文件夾層次結構的特殊文件夾中的圖像。 因爲我不想採用這些路徑和設置,我必須修改原始來源。修改顛覆中的第三方代碼

目前我的倉庫看起來是這樣的:

  • /的3rdParty
    • /公司A
      • /CompanyAProduct1
        • /V1_0
        • /V1_1
  • /MyProductA
    • /分支
    • /標籤
    • /後備箱
      • /進口
      • /出口
      • /源

通過svn:externals我將所有我需要的東西(lib,dll或代碼)映射到導入文件夾中。現在我想修改導入文件夾中的文件,但是這也會修改原始來源(據我所知)。 什麼是在我的導入文件夾中擁有修改版本的最佳解決方案,但原始源碼保持不受影響?我應該創建第三方代碼的分支嗎?但是,我必須更新每個新版本的原始來源。

回答

1

閱讀部分vendor分支顛覆紅皮書使用Subversion版本控制):

http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html

一般供應商分支管理過程
管理供應商的分支機構通常的工作原理是這:首先,你創建一個頂級目錄(比如/ vendor)來保存供應商分支。然後,將第三方代碼導入到該頂級目錄的子目錄中。然後,您將該子目錄複製到您的主開發分支(例如,/ trunk)的適當位置。您始終在主開發分支中進行本地更改。隨着您正在跟蹤的代碼的每個新版本,您將其帶入供應商分支並將更改合併到/ trunk中,解決您的本地更改與上游更改之間發生的任何衝突。 ... (參見Vendor Branches chapter of the redbook其餘部分的具體命令和完整的例子。)

基本上,您檢查與您的項目分開的供應商代碼,標記版本,然後svn將其複製到您的項目。 這將允許您進行本地修改,同時仍保留指向原始發行版的指針。

好處是,當供應商發佈他們的產品的新版本時,紅皮書會描述如何將新版本合併到您的項目中,以便您對原始版本進行的相同本地更改將應用​​於新版本。當然,理論上聽起來很合理,但在實踐中可能有一些陷阱:

但事情並非總是如此簡單,事實上,源文件在各版本之間移動的情況相當普遍軟件。這使確保我們的修改對新版本代碼仍然有效的過程複雜化,並且事情可能會迅速降級,因此我們不得不在新版本中手動重新創建自定義。

0

是的,你應該製作第三方代碼的一個分支,並做你需要的更改。如果您有更新的第三方,您可以更新新版本,可能只需使用合併。