1,強(qiáng)制寫(xiě)日志
在每次提交的時(shí)候?qū)懨魈峤坏哪康氖且粋€(gè)很好的習(xí)慣,Subversion默認(rèn)沒(méi)有提供,但是可以通過(guò)鉤子實(shí)現(xiàn):
將下面的代碼存為pre-commit.bat或pre-commit.cmd放到版本庫(kù)的hooks目錄下即可,當(dāng)你不寫(xiě)日志提交的話就會(huì)報(bào)告錯(cuò)誤。(如果你下載使用,需要修改SVN_BINDIR為你的Subversion安裝的程序目錄)
@echo offset SVN_BINDIR=d:\Subversion\binsetlocalset REPOS=%1set TXN=%2rem check that logmessage contains at least 10 characters%SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nulif %errorlevel% gtr 0 goto errexit 0:errecho Empty log message not allowed. Commit aborted! 1>&2exit 1
注:修改自Subversion官方網(wǎng)站。
2,可以修改歷史日志
歷史上的日志寫(xiě)的不好,我們希望修改,默認(rèn)對(duì)Subversion是不允許的,并且會(huì)提示需要?jiǎng)?chuàng)建pre-revprop-change鉤子。最簡(jiǎn)單的方式是創(chuàng)建一個(gè)空白的post-revprop-change.bat文件放到版本庫(kù)的hooks目錄下,但是這種方式不夠嚴(yán)格,用戶具備了修改所有屬性的權(quán)利,例如修改作者的權(quán)利(可以提交垃圾然后栽贓嫁禍了)。所以要限制用戶只能修改日志,所以有了下面的代碼,將其存為pre-revprop-change.bat放到版本庫(kù)的hooks目錄下即可。
@ECHO OFF
set repos=%1set rev=%2set user=%3set propname=%4set action=%5:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Only allow changes to svn:log. The author, date and other revision:: properties cannot be changed::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Only allow modifications to svn:log (no addition/overwrite or deletion)::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::if /I not '%action%'=='M' goto ERROR_ACTION:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Make sure that the new svn:log message contains some text.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: set bIsEmpty=truefor /f "tokens=*" %%g in ('find /V ""') do ( set bIsEmpty=false)
if '%bIsEmpty%'=='true' goto ERROR_EMPTYgoto :eof:ERROR_EMPTYecho Empty svn:log properties are not allowed. >&2goto ERROR_EXIT:ERROR_PROPNAMEecho Only changes to svn:log revision properties are allowed. >&2goto ERROR_EXIT:ERROR_ACTIONecho Only modifications to svn:log revision properties are allowed. >&2goto ERROR_EXIT:ERROR_EXITexit 1