开发工具癖程序员

Mercurial(Hg)之用户权限管理

2016-10-24  本文已影响1436人  行之与亦安

在BitBucket上,对于某一个私有仓库,可以设定这个仓库的用户以及权限。说权限,其实也就两种,一个是读权限,也就是说对某个用户是否可见。另外一个是写权限,也就是某用户是否可以将自己的更改写入到库中。

如果可以接入广域网,BitBucket也就能搞定权限的问题了。然而,最近公司要在局域网的环境内办公,而领导又想控制权限的问题,由于一开始大家都不知道怎么设定水银的权限问题,于是就想着要回到SVN上了。但我们组内的同事其实都只接触过水银,没有接触过SVN。况且水银管理源代码确实方便一些。因此最近没啥事的我就开始琢磨如何用水银来进行权限管理。绕过的弯子就不多说了,就直接切入实验成功的路子吧。重要的参考文献应当先列一下,以示对先贤的尊重:

文献中引用的重要官方文献有两篇,也在此列出:

本来,把这些参考文献全部列出,也就可以了。但是使用FATKUN'S BLOG的教程时有几次碰壁,所以想再写出一个新的版本来,并且将注意事项也一并列出。

需要提一句的是,由于目前公司用Windows Server来做服务器,因此以下所述都是在Windows上搭建水银服务器并管理用户权限的过程,如果希望在Linux服务器上搭建的朋友请绕道或等我一段时间。

软件包的安装

如果是对水银本身还比较不熟悉的朋友,请查看我的水银系列文章。在水银系列文章中,提到了一个非常流行的软件,叫TortoiseHg。在水银系列文章中,提到了一个非常流行的软件,叫TortoiseHg。这个软件是一定要装滴。用它来管理仓库,特别省心。如果仅仅想做简单的不加权限控制的服务端,那么TortoiseHg就够了。使用Hg)。这个软件是一定要装滴。用它来管理仓库,特别省心。如果仅仅想做简单的不加权限控制的服务端,那么TortoiseHg就够了。使用Hg。在水银系列文章中,提到了一个非常流行的软件,叫TortoiseHg。这个软件是一定要装滴。用它来管理仓库,特别省心。如果仅仅想做简单的不加权限控制的服务端,那么TortoiseHg就够了。使用Hg) serve就可以让别人都来访问你的仓库了。但是,如果要做权限的管理,那还要安装下面几个软件。

注意事项

仓库的仓库

在服务器上,要存放的仓库肯定不止一个,有各个项目组的不同项目。但是为了方便管理,请将所有的水银仓库都放在一个共同的文件夹中,这个文件夹,就可以被看成是仓库的仓库了。

我的仓库的仓库的路径是D:\Development

配置hgwebdir.cgi

在xampp安装目录htdocs下,建立一个hg文件夹
<xampp install>\htdocs\hg
在hg目录下,建立一个hgwebdir.cgi文件,把下面的内容拷贝进去

#!C:/Python27/python.exe
#
# An example hgweb CGI script, edit as necessary
# See also http://mercurial.selenic.com/wiki/PublishingRepositories
# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "E:\\xampp\\htdocs\\hg\\hgweb.config"
# Uncomment and adjust if Mercurial is not installed system-wide:
import sys
sys.path.insert(0, "C:\\Python27\\Lib\\site-packages")
# Uncomment to send python tracebacks to the browser if an error occurs:
import cgitb
cgitb.enable()
from mercurial import demandimport
demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)

配置hgweb.config

再建立一个hgweb.config

[paths]
/ = D:/Development/*
 
[web]
descend = True
allow_push = false
allow_pull = false
allow_read = *
push_ssl = false
style = gitweb

配置httpd.conf

打开<xamp install path>/apache/conf/httpd.conf文件,在最末位加入:

# 目录配置
ScriptAliasMatch ^/hg(.*) E:/xampp/htdocs/hg/hgwebdir.cgi$1
<Directory "E:/xampp/htdocs/hg">
  Options ExecCGI FollowSymLinks
#去掉SSLRequireSSL的#号就强迫使用ssl来访问
 #SSLRequireSSL
</Directory>

具体含义暂不清楚。

现在即可以重启apache服务,重启后,通过http://localhost/hg/访问。接下来是添加用户和用户的权限管理。

用htpasswd.exe建立用户密码文件

htpasswd.exe在apache的bin目录可以找到,使用方法主要有

htpasswd -c 文件名 用户名               //参数-c创建密码文件,输入后会提示你输入密码
htpasswd 文件名 用户名                 //如果用户名一样会更新密码

举个例子,我现在要建两个用户

htpasswd -c hguser xingzhi
htpasswd hguser yian

这时会得到一个hguser的文件,把它拷贝到conf目录下

修改httpd.conf配置

在httpd.conf配置最末尾加入,注意路径改为你的

<Location /hg>
    Order Allow,Deny
    Allow from all
    AuthType Basic
    AuthName "Mercurial repositories"
    AuthUserFile "E:\\xampp\\apache\\conf\\hguser"
    Require valid-user
</Location>

这样就可以了,重启浏览器,试试从浏览器访问hg的网页?会提示你输入用户名和密码。

针对某些项目的权限设置

在服务器存放项目的文件中,在.hg目录新建一个hgrc文件,里面可以配置为

[web]
push_ssl = False
allow_pull = xingzhi, yian
allow_push = xingzhi, yian
allow_read = xingzhi, yian

好了,现在呢,你要做的就是在每一个仓库中,规定哪些人有读的权限,哪些人有push和pull的权限就可以了。

上一篇 下一篇

猜你喜欢

热点阅读