svn提交新增的文件_svn限制提交文件以及提交代码同步到相应的目录

钩子脚本的具体写法和shell脚本写法是一样的。钩子脚本就是被某些版本库事件触发的程序,例如:创建新版本或修改未被版本控制的属性,每个钩子都能掌管足够的信息来了解发生了什么事情,操作对象是什么以及触发事件的用户账号。根据钩子的输出或者返回状态,钩子程序能够以某种方式控制该动作继续执行,停止或者挂起。

默认情况下,钩子的子目录中包含各种版本库钩子模板

0e9231eec92a19984574d90d36ab1167.png

如果想使用将后面的.tmpl去掉即可。

常用钩子模板:

post-commit 在提交完成成功创建版本之后执行该钩子,提交已经完成,不可更改。

pre-commit 提交完成前触发执行该脚本

start-commit 在客户端还没有向服务器提交数据之前,及没有建立Subversion transaction 之前。

工作上通过pre-commit来限制文件的扩展名及大小以及注释

cp pre-commit.tmpl pre-commit

chmod 700 pre-commit

810cb3364b5c8f3fcf9f5966399a3fb3.png
#!/bin/shexport LANG=en_US.UTF-8  REPOS="$1"TXN="$2"#此处更改大小限制,这里是5MMAX_SIZE=5242880#此处增加限制文件后缀名FILTER='.(zip|rar|o|obj|tar|gz)$' SVNLOOK=/usr/bin/svnlook LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | wc -c` if [ "$LOGMSG" -lt 9 ]then echo "Please enter more than 8 characters of submission description" 1>&2 exit 1fi files=$($SVNLOOK changed -t $TXN $REPOS |cut -d " " -f 4-) rc=0 echo "$files" | while read f;doif echo $f|tr A-Z a-z|grep -Eq $FILTER;thenecho "File in ($FILTER) format is not supported" >&2exit 1;fi filesize=$($SVNLOOK cat -t "$TXN" "$REPOS" "$f" | wc -c) if [ "$filesize" -gt "$MAX_SIZE" ]thenecho "File is not allowed to be greater than 5m" >&2exit 1fidone

如图输入字符不够提示

e403d406edfe848eefa19954d0319fa9.png
98737129a2498089e999ec943f6ef901.png

使用post-commit 将代码同步到code_manager里

540268178ee4ec917a2e40eaed1ba328.png

svn co svn://192.168.148.130/ad_industry/trunk/ /home/code_manager --username=xcc --password=123

186c1792383f16ddb325dec4610df982.png

已经拷贝到里面

705402436e9c984a9c4df8a24018c019.png

拷贝一份post-coomit

cp post-commit.tmpl post-commit

我这里使用winScp来修改post-coomit

添加如下信息

export LANG=en_US.UTF-8  SVN=/usr/bin/svn   STATIC_DIR=/home/code_manager/toutiao_project$SVN update  $STATIC_DIR --username xcc --password 123 --no-auth-cache export LANG=en_US.UTF-8  SVN=/usr/bin/svn   STATIC_DIR=/home/code_manager/toutiao_project$SVN update  $STATIC_DIR --username xcc --password 123 --no-auth-cache

注意mailer 那行要注释掉

45306d9a0e1cb947628121f014724483.png

修改post-commit权限

chmod 700 post-commit

e5f430a80f508846592579518a5569b7.png

现在文件里没有Hello.java

9ee851dd4acdce00d14304592886c65d.png

eclipse提交Hello

062b43c9b7fd510a2beaed7d21d92148.png

提交后,会自动更新

9c6faf95a4fea072a5da64ba3cc85215.png

由于安全问题,Subversion版本库在一个空环境中执行钩子脚本--就是没有任何环境的变量,甚至没有$PATH或者%PATH%。由于这个原因,许多管理员会感到困惑,他们的钩子脚本手动运行时正常,但是在Subversion中却执行不了。要注意:必须在钩子脚本中设置好环境变量或者写绝对路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值