Redmineのチケット番号を指定してソース差分を取る
Redmineのチケット番号を指定してソース差分を取る
ソースの差分を取るとき、Redmineのチケット番号を指定したいなと思ったので、バッチを作りました。
チェックアウトしたフォルダで実行して、チケット番号をカンマ区切りで複数指定したら勝手にその前後のソースをフォルダにエクスポートして、StepCounterを使って差分取ってくれます。
※コミットログコメントにチケット番号が書いてあることが前提です。
因みにこちらのStepcounterを利用しています。
マジで感謝です。
https://github.com/takezoe/stepcounter
あんまイケてないけど、とりあえず晒してみます。
ECHO OFF cd %~dp0 ECHO ####################################### ECHO # ECHO # ソース差分取得用 ECHO # 新旧ファイル取得バッチ ECHO # ECHO # リビジョンを指定して新旧ファイルの ECHO # 取得を行えます。 ECHO # Copyright HAL 2016 ECHO # ECHO ####################################### REM REM 使い方 REM REM チェックアウトしたSVNのフォルダにこのバッチファイルをコピーし、 REM stepcounter-3.0.3-jar-with-dependencies.jarを同じ階層に置く。 REM ダブルクリックで実行後、変更した際のリビジョンをカンマ区切りで入れると REM その変更前後の差分を取得してcount.xlsに出力する REM ECHO. ECHO. ECHO 対象チケット番号を指定してください(カンマ区切り複数指定可) SET /P TARGET_TICKET=対象チケット番号: ECHO 出力フォーマットを指定してください(text、html、excel) SET /P EXPORT_FORMAT=出力フォーマット: if "%EXPORT_FORMAT%" == "excel" ( SET EXPORT_TYPE=xls ) ELSE IF "%EXPORT_FORMAT%" == "html" ( SET EXPORT_TYPE=html ) ELSE IF "%EXPORT_FORMAT%" == "text" ( SET EXPORT_TYPE=txt ) ECHO. ECHO. setlocal ENABLEDELAYEDEXPANSION rd /s /q old rd /s /q new mkdir old mkdir new ECHO. >changes.list ECHO. >changes.log REM チケット番号の件数分繰り返し FOR %%i IN (%TARGET_TICKET%) DO ( svn log --search "refs #"%%i | find "|" > ticket.lst ECHO ****対象リビジョン(#%%i)**** FOR /F "tokens=1,2,3,4* delims=|" %%a IN (ticket.lst) DO ( REM リビジョンの逆順を保持 SET REV_TEMP= %%a ECHO !REV_TEMP:r=! SET TARGET_REV=!REV_TEMP:r=!,!TARGET_REV! ) ECHO ****変更後ファイル取得(#%%i)**** FOR %%a IN (%TARGET_REV%) DO ( REM リビジョンの逆順を保持 SET /A REV_TEMP= %%a SET REV_LIST=!REV_TEMP!,!REV_LIST! REM 新しい方のファイルをExport svn log -r %%a >>changes.log echo LIST >> changes.log FOR /F "usebackq tokens=1,2" %%t IN (`svn diff -c%%a --summarize`) DO ( echo %%u >> changes.log mkdir new\%%~pu svn export -r %%a --force %%u %~dp0\new\%%~pu%%~nxu ) ) REM リビジョンの新しい順にリストを作成 FOR %%a IN (%REV_LIST%) DO ( SET /A REV_TEMP= %%a - 1 SET REV_LIST=!REV_TEMP!,!REV_LIST! FOR /F "usebackq tokens=1,2" %%t IN (`svn diff -c%%a --summarize`) DO ( echo !REV_TEMP!,%%~pu%%~nxu >> changes.list mkdir old\%%~pu ) ) ECHO ****変更前ファイル取得(#%%i)**** REM リストを元にEXPORT FOR /F "skip=1 tokens=1,2* delims=," %%a IN (changes.list) DO ( svn export -r %%a --force %%b %~dp0\old\%%b ) ECHO ****出力が完了しました(#%%i)**** ECHO ****差分出力(#%%i)**** java -cp stepcounter-3.0.3-jar-with-dependencies.jar jp.sf.amateras.stepcounter.diffcount.Main -format=%EXPORT_FORMAT% -output=%%i.%EXPORT_TYPE% new old ECHO ****差分取得が完了しました(#%%i)**** ) ECHO. ECHO. pause