2013-02-01 45 views
0

我正在使用第三方庫作爲我的代碼庫的一部分。它有一個bug,我有2個選擇:創建和應用svn補丁的過程

  1. 創建和重寫的類提供了大的自由行爲。
  2. 的錯誤

我更喜歡2,因爲在邏輯上更有意義創建一個SVN補丁,但我不知道如何做到這一點,

辦以下:

  1. 修改第三方庫的代碼
  2. 創建補丁文件
  3. 回覆我的倉庫
  4. 應用補丁文件
  5. 補丁文件添加到資料庫
  6. 提交我的變化

如果我應該使用補丁,那麼這將存儲在存儲庫中?

+1

選擇3.報告的bug(與修訂,如果你想)給第三方供應商,讓他們修復他們的代碼,這樣當你在將來得到更新時,你不會收到錯誤。 –

+0

理想情況是,但從他們那裏獲取更新代碼需要很長時間。我需要這個固定的asap,所以不能去那個選項害怕 –

回答

1

檢查Vendor Branches

但是有時候,你想保留自己的版本控制系統自定義修改第三方代碼。 [...]這些修改可能包括新功能或錯誤修復,[...]。

現在你面對一個有趣的情況。您的項目可以以一些脫節的方式存儲對第三方數據的自定義修改,例如使用修補程序文件或完整的替代版本的文件和目錄。但是這些很快就成爲維護頭痛,需要一些機制來將您的自定義更改應用於第三方代碼,並且需要使用您跟蹤的每個後續版本的第三方代碼重新生成這些更改。

供應商分支基本上是一個目錄(我們稱之爲A)和未修改版本的源代碼。您將此目錄分支到您的項目(或任何其他位置,我們稱之爲X)並將您的路徑應用到此分支。如果供應商更新他的組件,您將把它導入一個目錄(我們稱之爲B)。要更新自己修改的庫,您將在B和A之間進行合併並將其應用於X.通過這種方式,您可以保留修改,但也可以獲得供應商軟件版本之間的所有更改。

記住使用 - 忽略祖先選擇在合併命令否則你將取代已更改的文件,而不是應用的diff