GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

gitolite的安装和使用

git用起来很方便,小型团队不需要权限区分时,仅仅使用git就够了。

需要权限区分时,可以使用gitolite来做权限控制。

安装

首先安装好 git openssh 等,这里不再累述。

ssh到安装好git的服务器上,

切换到git用户 sudo su - git ,之后确认下 .ssh 目录下没有 authorization_keys 文件或改文件为空。(以下这些命令都在git用户下执行)

运行下面的命令

1
2
3
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin

这三个命令的作用是,从github.com克隆gitolite的安装仓库,在当前用户(git)的用户目录下创建一个bin目录,并且把gitolite安装到这个目录。

安装到这个目录后,由于path里没有这个目录,调用此目录下新安装的命令时,需要写全路径,不过这影响不大,因为这几个命令不会经常用。

下面这个很关键,不要错,把自己用的客户机上的公钥(.ssh目录下的id_rsa.pub)文件拷贝到服务器上git用户目录下,并且命名为admin.pub,之后再运行下面的命令

1
/home/git/bin/gitolite setup -pk admin.pub

此命令运行成功后,会出现如下内容:

1
2
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/

而且会在git用户目录下创建 repository目录和projects.list文件。
如果用的公钥不正确,可以删除这2个目录/文件,然后重新来过。

此时gitolite已经安装好了,要设置仓库、用户和权限,都需要在客户端(就是前面生成admin.pub的机器)上进行了

日常管理

首先把gitolite-admin这个仓库克隆到本地,所有管理工作都由这个仓库进行。

1
git clone ssh://git@host/gitolite-admin

如果出错,请首先检查客户端电脑的用户公钥是否就是安装过程中使用的admin.pub。

克隆下 gitolite-admin 这个仓库后,会发现有2个目录 conf 和 keydir,

  • conf是仓库和用户的配置目录,内有一个gitolite.conf 文件,存储用户和仓库的对应权限
  • keydir 是保存的用户的公钥,按照上述安装步骤进行的,应该已经有一个 admin.pub 文件了

创建仓库

不需要手工创建仓库,在 conf/gitolite.conf 文件中配置的仓库名,在commit并push后,会自动被创建。

仓库的URL

仓库的URL是

ssh://git@host/repo-name

例如:

ssh://git@192.168.1.2/testing

仓库名后面有或没有.git都可以。

gitolite 命令

除了安装时使用gitolite命令的setup参数初始化了 gitolite-admin 和 testing 两个仓库外,这个命令还可以接收以下这些参数

list-groups                 list all group names in conf
list-users                  list all users/user groups in conf
list-repos                  list all repos/repo groups in conf
list-phy-repos              list all repos actually on disk
list-memberships            list all groups a name is a member of
list-members                list all members of a group

这可以帮助我们确认服务器上到底有哪些仓库/用户等。

参考

gitolite github网址:https://github.com/sitaramc/gitolite