Gitolite 简介

What is gitolite

Gitolite是git的顶层的访问控制层。

下面是一些特性:

  • 在服务器端,使用一个单独的unix用户。
  • 提供多用户访问
    • 他们不是真正的用户
    • 它们不会获得shell权限
  • 控制对多个git仓库的访问
    • 真正的读访问被repo层控制
    • 写访问在branch/tag/file/directory层控制,包括谁能够rewind,create以及delete branches/tags
  • 能够不经过root允许进行安装,假设git和perl已经被安装了
  • 访问认证通常采用sshd,但是也可以使用http

Setting up gitolite

设置gitolite

这是使用gitolite的第二步,在install之后。这个步骤也是发生在server端。


安装完软件之后就可以使用了,使用之前先要设置。

首先你需要有一个public key文件。

假设这个管理员叫做alice,这个公钥可能被命名为alice.pub。

然后主机用户运行

   gitolite setup -pk alice.pub

如果这个命令被成功的执行了,那么就完成了设置。

如果有警告,那么可能你提供的这个公钥在服务器上具有获取终端的权限,它不会工作。

通常,gitolite运行在一个用户不能直接访问的主机上,你采用其他的一些用户名登录,然后使用su -git命令。

在此,没有密钥被用来获取shell访问,因此没有冲突。

另外的方法是使用两个不同的密钥,用别名来区分。

setup命令还有其他的用处,因此在安装完了之后你可能还会用到它

  • 当你把一个已有的仓库移动到gitolite中时,更新钩子。或者修正钩子。
  • 更改一个丢失的管理员密钥
  • 设置gitolite为http模式

当有疑问的时候,运行gitolite setup,它不会造成什么损害,当然了如果你有上千个仓库的时候它会有些慢。

Cloning the admin repo

这是使用gitolite的第三步

克隆管理员repo,来到使用公钥设置的工作区,运行

   git clone git@host:gitolite-admin

注意,不能包括repositories/部分

你可以在最后包含.git,但是这是可选的

如果这步成功了,那么你可以增加用户,repo仓库,或者其他的事情了。

如果这步失败了,去看看ssh的文档。

Gitolite administration

服务器端的管理

下面的命令要求用命令行访问服务器。

它们通常是一次性或者很少活动的。

  • 更改rc文件的内容
  • 安装客户的hooks,对所有的repos或者某一部分repos
  • 移动已经存在的repos到gitolite

access control via the gitolite-admin repo

日常操作大致如下:

  • 把gitolite-admin repo, clone下来到你的工作区
  • 做出适当的更改
  • add, commit, 以及 push

the conf/gitolite.conf文件

gitolite的大部分功能来自于conf/gitolite.conf文件。

这里面制定了对repos的访问控制细节。

任何关于增加用户的操作都来自于这个文件

下面是个例子

   @staff = dilbert alice # line 1
   @projects = foo bar # line 2
   repo @projects baz #line3
       RW+ = @staff #line 4
       - master = ashok #line5
       RW = ashok #line6
       R = wally #line7
       config hooks.emailprefix = ['%GL_REPO] ' #line8

从下面的链接学到更多

  • 基础语法 -- 注释,空格,包含文件等 
  • 定义组, 1,2行
  • 增加删除用户
  • 增加删除repos 3行
  • 定义访问规则 4,5,6,7行
  • gitolite选项
  • git config关键字和值 8行
  • wile repos -- ad hoc, user-created, repos

Basic syntax

basic syntax

通常来说,所有的元素都是用空格隔开的;没有逗号,分号,以及其他的东西。

注释通常用shell的样式,#

用户名和repo名字一样,它们都以字母开始,但是可以用点,下划线,减号连接

用户名可以选择用@符号后面跟一个至少包含一个点号的域名

组名与用户名类似,以@开头

repo的名字里可以包含/符号

默认没有续行的功能,你不需要它们。

inlcude files

gitolite允许你将配置文件分为多个

使用下面的语法来包含进来

   include "foo.conf"

可以使用通配符include *.conf

或者使用子目录foo/bar.conf repos/*.conf


你可能感兴趣的:(GIT)