自缚绳子:使用Git hook来校验push用户名的合法性
来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 00:04:31
Git和CVS一个很大的不同是,它没有一个完善的权限控制系统
即使采用了Gitosis工具,它实际上是通过公钥来控制某台服务器的权限
用户在使用git前,依然需要设置user.name来控制提交时的用户名
但即使你没有设置,会有一个默认的空用户名或者是自己的登录用户名,如root
这样通过git log就很难看到对应的代码到底是哪个人员修改的了
不过,可以通过hook来初步解决这个问题
在git目录下的hooks目录里,新建一个pre-receive的hook,代码如下:
折叠展开复制代码
- while read old new name; do
- name=$(git log -1 –pretty=format:%aN $new)
- email=$(git log -1 –pretty=format:%ae $new)
- user_prefix=`echo $name | awk -F'_' '{print $1}'`
- check_user=`echo $GIT_VALID_USER | grep -c $user_prefix`
- if [ "$check_user" == "0" ]
- then
- echo "Username $name denied, please set user.name"
- exit 43
- else
- exit 0
- fi
- done
需要在服务器上设置一个环境变量GIT_VALID_USER,保存合法的用户名列表
当用户名校验不通过,则返回一个非0的值即可
如果需要严格的用户名校验,即提交的user.name必须是gitosis里配置的对应Client的用户名
则可以在/usr/local/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/serve.py中第202行增加如下代码:
然后在hook里校验name是否等于这个环境变量的值即可
但由于我们有一些公共的服务器,可能很多开发人员都会在上面push代码,所以不能使用此严格的校验方式
只能使用上述的有效用户名列表的验证方式
使用Git hook来校验push用户名的合法性
简化的git push
使用jquery实现用户名验证
API HOOK的实现原理
最牛的用户名
git中配置autocrlf来正确处理crlf
Git来获取Android源码(转)
利用hook截获进程的API调用
TCP校验值的伪头以及校验值计算
改革开放的合法性危机]
改革开放的合法性危机
(转)Git GUI简单使用介绍 - Software Engineering - 好好学...
在Windows环境中使用版本管理工具Git
Excel基本功能_使用语音校验输入准确性
Windows 平台的 Git 图形界面客户端
在多个网站使用同一个用户名容易被跟踪
持股会的现实合法性
怎样审核发票的合法性
论政治的合法性原理]
Git的推广心得 | Jeff的妙想奇境
配置Git服务器的几种方法 | 1个饼
对天安门广场孔子塑像合法性的质询
轰炸利比亚的合法性究竟在哪
如何增强中国共产党执政的合法性基础