git用起来很方便,小型团队不需要权限区分时,仅仅使用git就够了。
需要权限区分时,可以使用gitolite来做权限控制。
安装
首先安装好 git openssh 等,这里不再累述。
ssh到安装好git的服务器上,
切换到git用户 sudo su - git
,之后确认下 .ssh 目录下没有 authorization_keys 文件或改文件为空。(以下这些命令都在git用户下执行)
运行下面的命令
1 | git clone https://github.com/sitaramc/gitolite |
这三个命令的作用是,从github.com克隆gitolite的安装仓库,在当前用户(git)的用户目录下创建一个bin目录,并且把gitolite安装到这个目录。
安装到这个目录后,由于path里没有这个目录,调用此目录下新安装的命令时,需要写全路径,不过这影响不大,因为这几个命令不会经常用。
下面这个很关键,不要错,把自己用的客户机上的公钥(.ssh目录下的id_rsa.pub)文件拷贝到服务器上git用户目录下,并且命名为admin.pub,之后再运行下面的命令
1 | /home/git/bin/gitolite setup -pk admin.pub |
此命令运行成功后,会出现如下内容:
1 | Initialized empty Git repository in /home/git/repositories/gitolite-admin.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
这可以帮助我们确认服务器上到底有哪些仓库/用户等。