经验分享之SVN禁止删除和强制注释操作的钩子脚本pre-commit
来源:互联网 发布:怎么植入php一句话木马 编辑:程序博客网 时间:2024/05/22 04:52
背景:SVN的项目文件被普通用户误删了,这是个非常严重的错误,还好恢复的及时,不然的话,后果不堪设想。但是由于删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,开发这些模块的小伙伴们还会遇到提交代码版本冲突的问题。由于波及的范围比较大,所以领导让我研究一下,怎么才能禁止普通用户删除SVN中的项目文件。于是,这篇文章就诞生了。
【操作步骤】
1、找到需要加权限的版本库中hooks目录下的pre-commit.tmpl文件,将其重命名,将后缀去掉,为pre-commit脚本文件。如果没有该文件,则新建脚本pre-commit。
每个文件的作用范围:
post-commit
在提交完成,成功创建版本之后执行该钩子,提交已经完成,不可更改,因此本脚本的返回值被忽略。
post-lock
对文件进行加锁操作之后执行该脚本
post-revprop-change
在修改 revision 属性之后,执行该脚本。因为修改稿已经完成,不可更改,因此本脚本的返回值被忽略(不过实际上的实现似乎是该脚本的正确执行与否影响属性修改)
post-unlock
对文件进行解锁操作之后执行该脚本
pre-commit
在 Subversion transaction 完毕之后,在提交之前,执行该脚本
pre-lock
对文件进行加锁操作之前执行该脚本
pre-revprop-change
在修改 revision 属性之前,执行该脚本
pre-unlock
对文件进行解锁操作之前执行该脚本
start-commit
在客户端还没有向服务器提交数据之前,即还没有建立 Subversion transaction(缩写为 txn) 之前,执行执行该脚本
2、修改pre-commit文件内容
原来的内容都注释掉,即在没有“#”的代码前加“#”,然后添加下面的内容:
REPOS="$1"TXN="$2"# Make sure that the log message contains some text.SVNLOOK=/usr/bin/svnlookif [ -z `$SVNLOOK log -t "$TXN" "$REPOS" |grep "[a-zA-Z0-9]"` ];then echo "nLog message cann't be empty! you must input more than 5 chars as comment!." >&2exit 1fiUSER=`$SVNLOOK author -t $TXN $REPOS`ADMINLIST=admin,helijieif [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq 0 ];thenif [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt 0 ];thenecho "You Don't have the pemmision of delete!Please contact your administrator!" >&2 exit 1fifiexit 0
详细介绍:
ADMINLIST=admin,helijie 表示只有admin和helijie这两个用户有删除文件的权限,如果还有其他人,只需用逗号隔开,当然,这些用户名需要在conf下的passwd文件中进行配置
3、给钩子脚本执行权限 chmod 755 pre-commit,不需要重启
4、测试
没有输入注释:
删除:
【学习心得】
1、没有做不到,只有想不到。
2、发现问题,解决问题,提升得更快
3、只有用户体验后才能发现更多的问题,然后才能更好地完善我们的管理系统,更好地为用户服务。
- 经验分享之SVN禁止删除和强制注释操作的钩子脚本pre-commit
- windows 下 SVN禁止删除和强制注释操作的钩子脚本pre-commit
- SVN禁止删除和强制注释操作的钩子脚本 (Linux)
- svn强制要求提交注释--pre-commit钩子
- 【转】svn强制要求提交注释--pre-commit钩子
- svn强制要求提交注释--pre-commit钩子
- svn强制要求提交注释--pre-commit钩子
- svn强制要求提交注释--pre-commit钩子
- svn强制要求提交注释--pre-commit钩子
- svn强制要求提交注释--pre-commit钩子
- SVN钩子 之 pre-commit
- SVN设置pre-commit和pre-revprop-change钩子
- svn钩子:pre-revprop-change,允许修改注释
- 【转】svn钩子:pre-revprop-change,允许修改注释
- SVN pre-commit hook
- 利用SVN的POST-COMMIT钩子自动更新
- SVN中已经提交的版本的注释,提示说“请管理员创建pre-revprop-change钩子”
- 分享SVN的钩子代码
- js学习笔记:String中的模式匹配
- java简介
- 一些框架设计上的相关点
- VS2012 代码格式化工具:AStyle和CoolFormat
- 第0节-斯坦福cs229机器学习笔记
- 经验分享之SVN禁止删除和强制注释操作的钩子脚本pre-commit
- Hadoop2.x 体系结构和源码编译
- Linux-Load Average解析
- Semi-prime H-numbers poj3292 (类比欧拉筛)
- Jqgrid表格基本总结
- MSP430数码管的使用Ⅰ
- Vim快捷键设置
- Linux内核设计与实现-进程管理与进程调度
- java并发编程,Thread类的使用