最近又回去用很難用的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好用,真是痛苦。
沒有留言:
張貼留言