2015-07-11 40 views
-2

我在Windows 7平臺(所有64位)上使用Subversion命令行工具的1.8.10版和TortoiseSVN的1.8.8.25755版。如何在兩個分支之間應用Subversion補丁

我公司的代碼在每個版本中都保存在單獨的分支中。二月份發佈的代碼將在分支1中發佈; 4月份發佈的代碼將在分支2中發佈。在2月發佈之後,我想比較branch2中的代碼和branch1中的代碼,以確保兩者之間不會發生任何更改,並創建一個修補程序文件,該修補程序文件將修改branch2與branch1具有相同的內容。

我能夠使用SVN命令行工具來創建使用補丁文件:

svn diff --old=branch1 --new=branch2 > differences.diff

問題的表面,當我嘗試應用補丁文件。使用一個非常基本的命令應用補丁:

svn patch differences.diff c:\temp\branch1

結果沒有改變BRANCH1。

svn patch --help表示我應該期望在屏幕上看到生成的輸出行,指示是應用還是拒絕了更改;我看到絕對沒有輸出。 --help也表示補丁文件應該有一行指示修補程序可以乾淨地應用到的分支的修訂版本,並給出該行的格式。我的補丁文件不包含符合規定格式的行。

(我也曾嘗試將使用TortoiseSVN的補丁,但是龜似乎有些特別,因爲它僅適用龜生成的補丁。)

我的問題的話,是有一些魔法應用補丁我沒有看到的文件?或者,我的命令是否正確生成補丁文件?或者,我試圖完成什麼(修補WC2看起來像WC1)根本不支持?

TIA爲您提供任何幫助/指導。

+0

在修補之前,您已閱讀過'differences.diff'的內容嗎?它是否有效補丁? –

+0

這是我第一次嘗試創建.diff文件,所以我不是專家,但從我在網上找到的東西看,它看起來像一個有效的補丁......除了我在OP中提到的那行外, (根據--help)應該存在,以指示哪個分支可以乾淨地應用補丁。 – kenfrmct

回答

0

你的diff格式假定PWD的版本比較BRANCH1和BRANCH2迪爾斯作爲直接公共父的力矩(WC,很明顯)

任何其他PWD會產生無效的(或者,更可能的 - 空)DIFF

更多防彈風格的差異是svn diff /URL/OF/BRANCH1 /URL/OF/BRANCH2 ...

+0

感謝您的回覆。我不確定我是否遵循了你在這裏提出的觀點。 branch1和branch2是存儲庫的有效WCs,並生成看起來像有效的.diff文件。在您的文章之後,我使用來自OP的相同命令和存儲庫分支的URL創建了一個.diff文件。生成的.diff文件與從WCs創建的文件具有相同的內容;但是,這些條目的順序不同。 (相同的五個文件顯示爲差異,但它們在原始.diff中的順序是2,5,4,3,1,與1,2,3,4,5)。我試圖將這個.diff應用於相同的結果 - 沒有喜悅。 – kenfrmct