如何在Linux系统下安装svn, 这里暂不介绍,请看本文下方的相关教程,在svn安装目录下有个hooks文件夹, 修改其中的pre-commit.tmpl文件;
cp?pre-commit.tmpl?pre-commit
修改pre-commit文件
#!/bin/sh
?
#?PRE-COMMIT?HOOK
#
#?The?pre-commit?hook?is?invoked?before?a?Subversion?txn?is
#?committed.? Subversion?runs?this?hook?by?invoking?a?program
#?(script,?executable,?binary,?etc.)?named?'pre-commit'?(for?which
#?this?file?is?a?template),?with?the?following?ordered?arguments:
#
#? ?[1]?REPOS-PATH? ?(the?path?to?this?repository)
#? ?[2]?TXN-NAME? ? ?(the?name?of?the?txn?about?to?be?committed)
#
#? ?[STDIN]?LOCK-TOKENS?**?the?lock?tokens?are?passed?via?STDIN.
#
#? ?If?STDIN?contains?the?line?"LOCK-TOKENS:\n"?(the?"\n"?denotes?a
#? ?single?newline),?the?lines?following?it?are?the?lock?tokens?fo
#? ?this?commit.? The?end?of?the?list?is?marked?by?a?line?containing
#? ?only?a?newline?character.
#
#? ?Each?lock?token?line?consists?of?a?URI-escaped?path,?followed
#? ?by?the?separator?character?'|',?followed?by?the?lock?token?string,
#? ?followed?by?a?newline.
#
#?The?default?working?directory?for?the?invocation?is??developer/article/1837099/undefined,?so
#?the?program?should?set?one?explicitly?if?it?cares.
#
#?If?the?hook?program?exits?with?success,?the?txn?is?committed;?but
#?if?it?exits?with?failure?(non-zero),?the?txn?is?aborted,?no?commit
#?takes?place,?and?STDERR?is?returned?to?the?client.? ?The?hook
#?program?can?use?the?'svnlook'?utility?to?help?it?examine?the?txn.
#
#?On?a?Unix?system,?the?normal?procedure?is?to?have?'pre-commit'
#?invoke?other?programs?to?do?the?real?work,?though?it?may?do?the
#?work?itself?too.
#
#? ?***? NOTE:?THE?HOOK?PROGRAM?MUST?NOT?MODIFY?THE?TXN,?EXCEPT? ***
#? ?***? FOR?REVISION?PROPERTIES?(like?svn:log?or?svn:author).? ?***
#
#? ?This?is?why?we?recommend?using?the?read-only?'svnlook'?utility.
#? ?In?the?future,?Subversion?may?enforce?the?rule?that?pre-commit
#? ?hooks?should?not?modify?the?versioned?data?in?txns,?or?else?come
#? ?up?with?a?mechanism?to?make?it?safe?to?do?so?(by?informing?the
#? ?committing?client?of?the?changes).? However,?right?now?neithe
#? ?mechanism?is?implemented,?so?hook?writers?just?have?to?be?careful.
#
#?Note?that?'pre-commit'?must?be?executable?by?the?user(s)?who?will
#?invoke?it?(typically?the?user?httpd?runs?as),?and?that?user?must
#?have?filesystem-level?permission?to?access?the?repository.
#
#?On?a?Windows?system,?you?should?name?the?hook?program
#?'pre-commit.bat'?or?'pre-commit.exe',
#?but?the?basic?idea?is?the?same.
#
#?The?hook?program?typically?does?not?inherit?the?environment?of
#?its?parent?process.? For?example,?a?common?problem?is?for?the
#?PATH?environment?variable?to?not?be?set?to?its?usual?value,?so
#?that?subprograms?fail?to?launch?unless?invoked?via?absolute?path.
#?If?you're?having?unexpected?problems?with?a?hook?program,?the
#?culprit?may?be?unusual?(or?missing)?environment?variables.
#
#?Here?is?an?example?hook?script,?for?a?Unix?/bin/sh?interpreter.
#?For?more?examples?and?pre-written?hooks,?see?those?in
#?the?Subversion?repository?at
#?http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/?and
#?http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/
?
?
REPOS="$1"
TXN="$2"
?
#?Make?sure?that?the?log?message?contains?some?text.
SVNLOOK=/usr/bin/svnlook
?
#?添加以下5行代码
LOGMSG=`$SVNLOOK?log?-t?"$TXN"?"$REPOS"?|?grep?"[a-zA-Z0-9]"?|?wc?-c`
if?[?"$LOGMSG"?-lt?10?];then?
? ?echo?"提交失败:?注释不能低于10个字符"?1>&2?
? ?exit?1
fi
?
#?以下全部注释掉
#?$SVNLOOK?log?-t?"$TXN"?"$REPOS"?|?\
#? ?grep?"[a-zA-Z0-9]"?>?/dev/null?||?exit?1
?
#?Check?that?the?author?of?this?commit?has?the?rights?to?perform
#?the?commit?on?the?files?and?directories?being?modified.
#commit-access-control.pl?"$REPOS"?"$TXN"?commit-access-control.cfg?||?exit?1
?
#?All?checks?passed,?so?allow?the?commit.
#exit?0
其实以上的去掉注释部分只有几行代码:
#!/bin/sh
?
REPOS="$1"
TXN="$2"
?
SVNLOOK=/usr/bin/svnlook? #?同pre-commit.tmpl文件中的SVNLOOK
LOGMSG=`$SVNLOOK?log?-t?"$TXN"?"$REPOS"?|?grep?"[a-zA-Z0-9]"?|?wc?-c`
if?[?"$LOGMSG"?-lt?10?];then?
? ?echo?"提交失败:?注释不能低于10个字符"?1>&2?
? ?exit?1
fi
然后 给pre-commit文件添加755权限:
chmod?755?pre-commit?或?chmod?+x?pre-commit
如果没有添加权限, 则会报:
Commit blocked by pre-commit hook (exit code 255) with no output 错误, 请注意。
更多Subversion (SVN)相关教程见以下内容
:
Ubuntu 14.04 下搭建SVN服务器 SVN://? http://www.linuxidc.com/Linux/2015-01/111956.htm
CentOS 7下安装iF.svnadmin实现Web方式管理SVN(源码安装)? http://www.linuxidc.com/Linux/2016-08/134214.htm
CentOS7.2 编译安装SVN1.9.5客户端? http://www.linuxidc.com/Linux/2017-03/141387.htm
SVN 服务器搭建步骤及使用实战 http://www.linuxidc.com/Linux/2017-01/139282.htm
CentOS 7下搭建配置SVN服务器? http://www.linuxidc.com/Linux/2017-05/144254.htm
CentOS 7.2下Nginx+MySQL+PHP-FPM+SVN配置Walle自动化部署系统详解 http://www.linuxidc.com/Linux/2016-11/137703.htm
基于腾讯CentOS 7云服务器搭建SVN版本控制库? http://www.linuxidc.com/Linux/2017-05/144244.htm
CentOS 7.1 下SVN安装与配置 http://www.linuxidc.com/Linux/2016-12/138637.htm
CentOS 6.8 搭建SVN(版本控制系统)及SVN的使用? http://www.linuxidc.com/Linux/2017-04/143093.htm
Linux上手动搭建svn服务器? http://www.linuxidc.com/Linux/2017-12/149777.htm
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。