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服务器。