30.6 对Gitolite的改进

笔者对Gitolite进行扩展和改进,涉及的内容主要包括:

通配符版本库的创建方式和授权。

原来的实现是克隆即创建(克隆者需要被授予C的权限)。同时还要通过另外的授权语句为用户设置RW权限,否则创建者没有读和写的权限。

新的实现是通过推送创建版本库(推送者需要被授予C权限)。不必再为创建者赋予RW等权限,创建者自动具有对版本库最高的授权。

避免通配符版本库的误判。

若将通配符版本库误判为普通版本库名称,会导致在服务器端创建错误的版本库。新的设计可以在通配符版本库的正则表达式之前添加^或之后添加$字符避免误判。

改变默认配置。

默认安装即支持通配符版本库。

版本库重定向。

Gitosis的一个很重要的功能——版本库名称重定向,没有在Gitolite中实现。我为Gitolite增加了这个功能。

在Git服务器架设的初期,版本库的命名可能非常随意,例如,redmine的版本库直接放在根下:redmine-0.9.x.git、redmine-1.0.x.git……随着redmine项目越来越复杂,可能就需要将其放在子目录下进行管理,例如放到ossxp/redmine/目录下。只需要在Gitolite的授权文件中添加下面一行map语句,就可以实现版本库名称的重定向。使用旧地址的用户不必重新检出,可以继续使用。


map(redmine.*)=ossxp/redmine/$1