CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作
需求:上传到SVN服务器的项目文件如果被普通用户误删了,虽然能恢复,但是如果删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,会很麻烦,可能还会出现提交代码版本冲突的问题,那么,怎么才能禁止普通用户删除SVN服务器的项目文件呢?
一、找到需要加权限的版本库中hooks目录下的pre-commit.tmpl文件,备份并将其重命名为pre-commit脚本文件。
cd /var/www/svn/Network_Group/hooks # 这是我要修改的版本库位置
cp pre-commit.tmpl pre-commit.tmpl-backup # 备份
mv pre-commit.tmpl pre-commit # 重命名
二、修改pre-commit文件内容
vim pre-commit,文件内容默认如下:
注释掉73-78行的内容,增加80-91的内容,下面的脚本复制粘贴就可以
if [ -z `$SVNLOOK log -t "$TXN" "$REPOS" |grep "[a-zA-Z0-9]"` ];then
echo "请输入注释!" >&
exit
fi
USER=`$SVNLOOK author -t $TXN $REPOS`
ADMINLIST=admin,zhangsan # 这里是拥有删除权限的用户,逗号隔开
if [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq ];then
if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt ];then
echo "你没有权限删除,请联系管理员删除!" >&
exit
fi
fi
ADMINLIST=admin,zhangsan 表示只有admin和zhangsan这两个用户有删除文件的权限,如果还有其他人,只需用逗号隔开,当然,这些用户名需要在conf下的passwd文件中进行配置
三、给 pre-commit 脚本文件执行权限 chmod 755 pre-commit,不需要重启SVN
四、测试
1、没有输入注释时,提示:
2、删除时若没有权限,提示:
脚本说明:
#!/bin/sh
REPOS="$1" # 库位置
TXN="$2" # 版本
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook # svnlook的位置
if [ -z `$SVNLOOK log -t "$TXN" "$REPOS" |grep "[a-zA-Z0-9]"` ];then # 如果commit的用户没有输入注释
echo "请输入注释!" >&2 # 提示错误
exit 1 # 错误退出
fi
USER=`$SVNLOOK author -t $TXN $REPOS`
ADMINLIST=GuoJiHe,melonlink # 这里是拥有删除权限的用户,逗号隔开
if [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq 0 ];then # 如果commit的用户没在ADMINLIST里面
if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt 0 ];then # 如果开头包含D(D代表删除)
echo "你没有权限删除,请联系管理员删除!" >&2 # 提示错误
exit 1 # 错误退出
fi
fi
本文参考自其他博客:
(1)https://blog.csdn.net/helijie92902/article/details/54534156
(2)http://blog.chinaunix.net/uid-29893597-id-5594571.html
(3)https://blog.51cto.com/laoguang/1139645
最新文章
- jQuery - 1.简单的JQuery
- 匿名函数和Lamda
- 上海SAP代理商 电子行业ERP系统 SAP金牌代理商达策
- install 命令用法详解
- linux 缺少动态连接库.so--cannot open shared object file: No such file or directory
- poj2631 树的直径 + bfs
- Qt之QTableView添加复选框(QAbstractItemDelegate)
- MySQL字符串类型转换时间类型
- bzoj1821
- Zepto源码笔记(二)
- Qt Assistant 工作机制
- Java读书笔记1
- composer的安装方法
- ABP框架连接Mysql数据库
- java前端js和框架内容知识和面试
- 在JAVA中返回类型使用泛型T和Object有什么区别?
- 【HDU5909】Tree Cutting(FWT)
- sqlserver 2008评估期已过
- 27-ATM+购物车程序
- pku oj overhang叠加卡片求最少的卡片数