1. 程式人生 > >windows 下 SVN禁止刪除和強制註釋操作的鉤子指令碼pre-commit

windows 下 SVN禁止刪除和強制註釋操作的鉤子指令碼pre-commit

昨天需求經理找到我,說他修了好幾遍的文件在SVN上被人刪除了,看不到歷史記錄了,問我有沒有辦法解決或者設定禁止刪除許可權.

想了想有2種方法實現:

1.最原始的,不設禁止刪除許可權的話,被刪除的文件可以到上一級目錄通過showlog找回,也能一個一個找到歷史提交資訊;
2.編寫禁止刪除許可權的指令碼,我參照網上前輩的指令碼,做了些許修改,發現是實際可執行的,有需要的可以看下。具體如下:

@echo off
set export LANG=zh_CN.UTF-8
setlocal
set Repos=%1
set TXN=%2
set SCM=chencx


rem check that logmessage contains at least 10 characters
svnlook log "%Repos%" -t "%TXN%" | findstr ".........." > nul
if %ERRORLEVEL% gtr 0 goto logerr
svnlook author -t "%TXN%" "%Repos%" | findstr "%SCM%"
IF %ERRORLEVEL% gtr 0 goto check
exit 0


:check
svnlook changed -t "%TXN%" "%Repos%" | findstr "^D"
if %ERRORLEVEL% == 0 goto err
pause
exit 0


:err
echo Only SCM can delete files or folders. 1>&2
pause
exit 1
:logerr
echo Empty log message(least 10 characters) not allowed. Commit aborted! 1>&2
exit 1

可能有人會問上面的強制註釋怎麼也寫在裡面,因為我發現強制註釋的鉤子和禁止刪除用的是同一個鉤子,即提交前必須滿足預設要求才能提交,所以把兩指令碼合併了。

指令碼還需優化,有大俠指令碼更好的,可以拋個給我哦。