30.5.2 通配符版本库,管理员通过推送创建
通配符版本库是用正则表达式语法定义的版本库,所指的并非某一个版本库而是和名称相符的一组版本库。要想使用通配符版本库,需要在服务器端Gitolite的安装用户(如git)主目录下,修改配置文件.gitolite.rc,使其包含如下配置:
$GL_WILDREPOS=1;
使用通配符版本库,可以对一组版本库进行授权,非常有效。但是版本库的创建则不像前面介绍的那样,不会在授权文件推送到服务器时创建,而是由拥有版本库创建授权(C)的用户手工进行创建。
对于用通配符设置的版本库,用C指令指定能够创建此版本库的管理员(拥有创建版本库的授权)。例如:
repo ossxp/.+
C=jiangxin
RW=dev1 dev2
管理员jiangxin可以创建路径符合正则表达式"ossxp/.+"的版本库,用户dev1和dev2对版本库具有读写(但是没有强制更新)权限。
使用该方法创建版本库后,创建者的uid将被记录在版本库目录下的gl-creator文件中。该账号具有对该版本库最高的权限。该通配符版本库的授权指令中如果出现CREATOR将被创建者的uid替换。
本地建库。
$mkdir somerepo
$cd somerepo
$git init
$git commit—allow-empty
使用git remote指令设置远程版本库。
$git remote add origin jiangxin-server[1]:ossxp/somerepo.git
运行git push完成在服务器端版本库的创建。
$git push origin master
Gitolite的原始实现是通配符版本库的管理员在对不存在的版本库执行clone操作时自动创建的。但是我认为这不是一个好的实践,经常会因为在克隆时把URL写错,从而导致在服务器端创建垃圾版本库。因此我重新改造了gitolite通配符版本库创建的实现方法,改为在对版本库进行推送的时候进行创建,而clone一个不存在的版本库会报错退出。
[1]jiangxin-server是设置的别名主机,是以jiangxin用户的公钥访问server服务器。