SVN前にCommitフック
-
05-09-2019 - |
質問
私は現在のように、既存の(ワ)コミットバッチファイルのためにSVN.最初の部分をシャットアウトコミットされないコメント作品として期待される。第二部はattmeptブロック利用犯監督の"ファイル、しかしこれは現在のブロックすべてを設定します。
私の理解のDOsスクリプティングなものではないので私のFindStr?
誰でもできるのですか?
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" diff -t %2 %1 | FindStr /R "[a-zA-Z]\.suo"
IF %ERRORLEVEL% EQU 0 exit 0
echo "SUO files cannot be committed" >&2
exit 1
解決
何かが発見された場合、および1何も見つかっていない場合は0を返します。findstr。あなたは自分の小切手を反転します。
あなたはそれを試してみることができますので、いいえバッチ-fooが、シェルが対話型であっても、Windows上で、必要ありません生きてます:
>dir | findstr ".sln"
15.01.2009 16:37 33.844 Project.sln
>echo %ERRORLEVEL%
0
>dir | findstr ".slngimpf"
>echo %ERRORLEVEL%
1
ところで、それが簡単に書き込む。
if errorlevel 0 andthencontinuewithwhatever
この方法で、あなたのスクリプトはまた不吉に対して安定である。
set errorlevel=0
、正しい方法で、%エラーレベル%でERRORLEVELをプリントアウトするために、将来の試みを破壊するであろう。
(編集)重要な注意:私はERRORLEVELはのの以上であるかどうかの if errorlevel
の構文チェックと言うのを忘れ値であることに試験しました。だから、それを正しく使用するために、あなたはいつものように、最初の最高のエラーをチェックする必要があります:
someCommand
if errorlevel 10 ...
if errorlevel 9 ...
if errorlevel 0 ...
他のヒント
いの答えを探していただけブロックにある全ての*.監督の"ファイルの グローバル-を無視し オプションです。
所属していません StackOverflow