AdSense

網頁

2020/9/5

TortoiseSVN 建立及套用修補檔 create and apply patch

最近又回去用很難用的SVN,想把修改的程式暫存起來之後回復,在git有git stash,但在SVN似乎只能用patch來達成類似的目的,除了麻煩外限制也很多。

例如現在專案中最新版本的程式碼如下。



做了點修改如下。



現在因為一些原因要回復到之前的狀態,而修改的內容未完成還無法提交,所以把修改的部分patch出來。專案目錄滑鼠右鍵 -> TortoiseSVN -> Create patch...



勾選要建立patch的檔案。



給patch檔一個名稱並儲存到任意資料夾,例如tmp.patch。此檔案待會要用來把修改的內容patch回程式中。



存檔後會顯示patch檔的內容與修改前的差異。



存檔後的patch檔。



建立修改內容的patch檔後SVN並不會把程式回退到patch前的狀態,要自己手動回復。專案目錄滑鼠右鍵 -> TortoiseSVN -> Revert...



勾選要回退的檔案,按下OK後程式就會回復到修改前的狀態。






把patch檔把修改的內容套用到程式中,專案目錄滑鼠右鍵 -> TortoiseSVN -> Apply patch...,然後選擇先前建立並儲存的patch檔。



勾選要patch的程式按Patch selected item即可把修改的內容套回程式中。


SVN patch的限制就是,要被patch的程式被patch並回復後不能再修改,如果又做了修改就會出現failed hunks狀態而無法套用patch,這是因為SVN是比對每一行的差異(hunk)來達成patch的效果,若程式與patch檔中hunk不一致就會無法patch。



TortoiseSVN會顯示套用patch前後的差異,然後程式會patch回修改的內容。



總之就是沒有Git好用,真是痛苦。


沒有留言:

AdSense