转:http://blog.sina.com.cn/s/blog_4b5039210102e3r3.html
Gitolite其实也是一个git repository,首先在server上安装好后,在client上把server上的repository clone下来,在本地做一些更改,再push回server,server端的hooks会根据push上来的配置来更新权限。
1. 在git server创建一个专有用户,用于管理git,所有git用户都将使用次用户访问git server。
$ useradd git
2. 管理员需要在本地自己机器(要做git管理的用户机器)上创建SSH公钥/私钥对。
$ ssh-keygen -f ~/.ssh/git-admin
!!!注意千万不要运行下面的命令将 .ssh/git-admin.pub 公钥文件追加到远程主机 server 的 user 主目录下的.ssh/authorized_keys 文件中
$ ssh-copy-id -i .ssh/git-admin.pub git@10.0.0.1
为了方便管理和不至于和其他公钥私钥混淆,先配置下SSH客户端的文件 ~/.ssh/config,
可以通过创建主机别名,在连接主机时,使用特定的公钥。例如 ~/.ssh/config 文件中的下列配置:
host git-server
3 在服务器上安装gitolite
(1) 首先把管理员的公钥copy到服务器上,
scp .ssh/git-admin.pub git-server:/tmp/admin.pub
(2) 下载gitolite
在git的用户目录下运行
git clone https://github.com/sitaramc/gitolite
(3) 安装
[git@git-server ~]$ mkdir bin
运行
[git@git-server ~]$ gitolite/install -ln
[git@git-server ~]$
[git@git-server ~]$ ls
bin
gitolite
[git@git-server ~]$ cd bin
[git@git-server bin]$ ls
gitolite
会在bin下生成一个gitolite可执行文件
运行:
[git@git-server bin]$ gitolite setup -pk /tmp/admin.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
此命令会在你的~/repositories/目录生成两个repository:gitolite-admin.git和testing.git
[git@git-server ~]$ cd repositories/
[git@git-server repositories]$ ls
gitolite-admin.git
testing.git
[git@git-server repositories]$ cd ..
用户目录下生成一个project.list,默认里面有一个testing的git的project
[git@git-server ~]$ more projects.list
testing.git