svn實現類似git stash及git stash pop的功能


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM