日志标签 Gitosis
Git 服务器软件 gitosis 的改进
7月20日
群英汇内部的 Git 服务器使用 gitosis 软件架设,能够实现针对版本库的授权,以及基于公钥的安全的无口令的版本库访问。
在 Gitosis 的使用过程中,我们根据需要对其进行了改进,以满足我们对授权和版本库管理上的需求:
- 增加了管理员角色,只有管理员才能够创建版本库
- 原来的实现只有 readonly 和 writable 两种权限,其中 writable 可以创建版本库。
- 我们权限分为三级:read/write/admin。拥有管理员(admin)权限,可以创建版本库,并自动具有读(read)写(write)权限
- 拥有写(write)权限也包含读(read)的权限
- 如果没有设置权限,禁止范围版本库
- 版本库匹配支持通配符,这样在授权的时候,可以用通配符为某个目录下的所有代码库授权
- 原有的实现,在配置文件中必须写入完整的版本库名称(路径)
- 当我们增加了管理员的概念后,增加通配符,就可以为特定的命名空间进行授权,而无须因为某个管理员要建库,还要修改授权文件
- 有了通配符后,读写权限的设置也更为简单。
- 通配符支持?,* 和 **。问号匹配一个字符,* 匹配任意字符(路径/字符除外),两个星号匹配包括路径分割符在内所有字符
- 增加了版本库路径映射的可用性。版本库路径映射在代码库重构中非常有用
- 增加了正则表达式匹配路径和替换映射
- 在权限检查的路径命中之后也检查路径映射,可以减轻错误配置的可能性
- 创建版本库只有写操作才进行,读操作不创建版本库
- 原来的实现支持即时创建版本库,在读取一个不存在的版本库时自动创建
- 读操作创建库,这会导致很多因为版本库克隆时路径输入错误导致错误建库
- 我们更改后,只允许在写版本库时并且具有 admin 权限才初始化新的代码库
- 版本库名称中允许出现中文(UTF-8)
- 基本上版本库命名都用英文字符,不过有个客户提出来支持中文版本库,我们就添加了这个支持
下面,拿一个配置文件来说明:

最新评论