簡體   English   中英

SVN預提交掛鈎

[英]SVN Pre Commit Hooks

我目前正在嘗試擴展我們已經存在(並且正在工作)的預提交批處理文件,以提交到SVN。 第一部分阻止任何沒有注釋且按預期工作的提交。 第二部分是阻止用戶提交SUO文件的方法,但是當前正在阻止所有提交。

我對DO腳本的理解不是很好,所以我懷疑這可能是我使用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

如果找到了某些內容,則findstr返回0;如果未找到任何內容,則返回1。 你剛把支票倒了。

即使在Windows上,shell也可以是交互式的,因此不需要batch-foo,因此您可以嘗試以下方法:

>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%的錯誤級別的任何嘗試。

編輯 )重要說明:我忘了說if errorlevel語法檢查錯誤級別是否大於或等於要測試的值。 因此,要正確使用它,必須始終首先檢查最高錯誤,例如:

someCommand
if errorlevel 10 ...
if errorlevel 9 ...
if errorlevel 0 ...

不完全是您要尋找的答案,但是您可以使用global-ignores選項阻止所有* .suo文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM