git下,有git stash這個命令可以方便地保存當前的修改,並還原代碼到未修改的狀態。然后處理完之后又可以使用git stash pop將之前的修改內容合並到當前代碼。
svn下,缺乏這樣的命令。不過可以用svn diff和svn patch來實現基本類似的功能。如下內容保存為svnstash.bat,並放到任意path環境變量目錄(如C:\window\)下即可。
命令:
svnstash:暫存。類似git stash,可多次執行。
svnstash pop:恢復之前暫存的內容,可多次執行,以此彈出。
@echo off if not exist %CD%\.svn ( echo %CD% 不是svn目錄 goto out ) set sdir=%CD%\.svn\stashed if '%1'=='pop' ( goto pop ) else ( goto stash ) goto out :stash if not exist %sdir% mkdir %sdir% set dt=%Date% set tm=%Time% set stime=%dt:~0,4%%dt:~5,2%%dt:~8,2%-%tm:~0,2%%tm:~3,2%%tm:~6,2% set tfn=%sdir%\svnstash-%stime%.diff svn diff >> "%tfn%" if %ERRORLEVEL% EQU 0 svn revert -R . echo 使用 svnstash pop 恢復上一次保存的內容 goto out :pop FOR /F "delims==" %%f IN ('dir %sdir% /a/b /o-d') DO ( echo %%f svn patch %sdir%\%%f . --ignore-whitespace del %sdir%\%%f echo poped %%f goto out ) echo 沒有暫存的內容 goto out :out