码迷,mamicode.com
首页 > 其他好文 > 详细

SVN实现删除权限控制和必须进行注释的提示操作

时间:2019-08-30 11:37:56      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:文件   参考   grep -w   技术   注释   backup   删除   怎么   net   

需求:SVN的项目文件如果被普通用户误删了,虽然SVN能恢复,但是如果删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,会很麻烦,可能还会出现提交代码版本冲突的问题,那么,怎么才能禁止普通用户删除SVN中的项目文件呢?

一、找到需要加权限的版本库中hooks目录下的pre-commit.tmpl文件,备份并将其重命名,将后缀去掉,为pre-commit脚本文件。如果没有该文件,则新建脚本pre-commit。

cp pre-commit.tmpl pre-commit.tmpl-backup

 

二、修改pre-commit文件内容

vim pre-commit

技术图片

 

 

修改为:

技术图片

或者将68-81行全都注释掉,加入以下代码:

REPOS="$1"
TXN="$2"

# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook

if [ -z `$SVNLOOK log -t "$TXN" "$REPOS" |grep "[a-zA-Z0-9]"` ];then
        echo "请输入注释!" >&2
        exit 1
fi
USER=`$SVNLOOK author -t $TXN $REPOS`
ADMINLIST=admin,zhangsan  # 这里是拥有删除权限的用户,逗号隔开
if [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq 0 ];then
        if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt 0 ];then
                echo "你没有权限删除,请联系管理员删除!" >&2
                exit 1
        fi
fi

# All checks passed, so allow the commit.
exit 0

详细介绍:

ADMINLIST=admin,zhangsan  表示只有admin和zhangsan这两个用户有删除文件的权限,如果还有其他人,只需用逗号隔开,当然,这些用户名需要在conf下的passwd文件中进行配置

 

三、给钩子脚本执行权限   chmod 755 pre-commit,不需要重启

 

四、测试

1、没有输入注释

技术图片

2、删除

技术图片

 

本文参考自博客:(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

SVN实现删除权限控制和必须进行注释的提示操作

标签:文件   参考   grep -w   技术   注释   backup   删除   怎么   net   

原文地址:https://www.cnblogs.com/opsprobe/p/11433869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!