2010-03-09 35 views
5

補丁文件與TortoiseSVN-由>創建補丁...問題而施加的svn補丁的Mercurial庫

嘗試導入補丁到使用hg import patchfile的Mercurial庫。

似乎有與汞怎麼會在補丁文件中引用的文件的問題:

unable to find 'gui/gui/RemoteFramework.cpp' for patching 
2 out of 2 hunks FAILED -- saving rejects to file gui/gui/RemoteFramwork.cpp.rej 

這似乎是個補丁是在目錄方面取得的一個問題,它應該被應用。我曾嘗試使用--hg導入的--base選項,但尚未到任何地方。

任何人有任何提示嗎?

回答

10

我懷疑你需要做hg import --strip 0 patchfile,因爲Subversion在文件路徑中不包含任何前綴。 --base指定應搜索文件的位置,--strip指出在diff標頭的開頭忽略多少(默認1個)路徑元素。

+0

如果使用「補丁」同義詞導入,並且簡短形式的--strip,它看起來很像使用普通舊補丁: hg patch -p0補丁文件 – krupan 2010-06-09 21:40:54

+0

謝謝!這也幫助了我。順便說一句,這件事情適用於CVS補丁,如魅力! – 2010-12-07 16:37:37

+0

我第三次來到這裏(:Thx! – 2013-01-10 08:01:15

0

我將我的項目CartoType從Subversion移動到Mercurial時遇到同樣的問題。我將Subversion的東西簽出到C:\ CartoType中,並在C:\ CartoType-mercurial中拷貝了Mercurial存儲庫。

我用TortoiseSVN創建統一的差異文件,並發現它使用的路徑如C:/CartoType/src/main/router/cartotype_router.h。使用C運行汞柱補丁:\ CartoType-善變,我發現做正確的事情是剝去路徑兩個要素,即:

hg patch -p2 c:\temp\patch1982.diff 

我需要做的另一個重要的事情是取代「索引」差異文件中的行與簽入註釋,因爲這是hg修補程序從中獲取它們的地方。因此,在這個例子中,我有我的diff文件的第一行從

Index: C:/CartoType/src/main/router/cartotype_router.h 

改變

Added an optional parameter to NewRoadOrWalkingRouter... (etc.) 

如果有在差異文件的多個指標線,他們都更改爲同一入住在評論中。