一,关于Gitosis
Gitosis 是Gitolite的鼻祖,同样也是一款基于SSH公钥认证的Git服务管理工具。但功能要比Gitolite弱些。Gitosis作者 Tommi Virtanen 最后一次提交是2009年9月。现在已经停止了更新。但是Gitolite依然有其生命力。Gitolite 配置简洁,可以直接在服务器端编辑,可成为针对某些服务定制的、内置的、无须管理的Git 服务。
二、安装Gitosis
$git clone git://github.com/ossxp-com/gitosis.git
进入gitosis目录,执行安装。
$cd gitosis
$sudo python setup.py install
如果出现下面的出错提示:
Traceback (most recent call last):
File "setup.py", line 2, in <module>
from setuptools import setup, find_packages
ImportError: No module named setuptools
下载setuptools包
shell# wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
解压setuptools包
shell# tar zxvf setuptools-0.6c11.tar.gz
shell# cd setuptools-0.6c11
编译setuptools
shell# python setup.py build
开始执行setuptools安装
shell# python setup.py install
user@rdsrv00:~/gitosis$ sudo adduser --system --shell /bin/bash --disabled-password --group git
有些系统,只容许特定用户组(如SSH用户组)的用户才可以通过SSH协议登录,这就需要将git 用户加入到ssh用户组中。
user@rdsrv00:~/gitosis$ sudo adduser git ssh
三、Gitosis 服务初始化
(1) 如果管理员在客户端没有公钥,使用下面的命令创建。
$ssh-keygen
(2) 管理员上传公钥到服务器。
jun@jun-ThinkPad-T440p:~$ scp /home/jun/.ssh/id_rsa.pub [email protected]:/tmp
(3) 服务端进行Gitosis服务初始化。
以git 用户运行gitosis-init命令,并向其提供管理员公钥。
user@rdsrv00:~/gitosis$ sudo su git
git@rdsrv00:/home/user/gitosis$ gitosis-init < /tmp/id_rsa.pub
(4)确保gitosis-admin 版本库钩子脚本可执行。
user@rdsrv00:~/gitosis$ sudo chmod +x ~git/repositories/gitosis-admin.git/hooks/post-update
四、管理Gitosis
1)管理员clone gitosis-admin管理库
当gitosis 初始化完成后,在服务端自动创建了一个用于gitosis自身管理的Git 库:gitosis-admin.git。
管理员clone gitosis-admin.git 库:
jun@jun-ThinkPad-T440p:~$ git clone [email protected]:gitosis-admin.git gitosis-admin-xxx
Cloning into 'gitosis-admin-zsun'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.
Checking connectivity... done.
jun@jun-ThinkPad-T440p:~$ cd gitosis-admin-zsun/
jun@jun-ThinkPad-T440p:~/gitosis-admin-xxx$ ls
gitosis.conf keydir
可以看到,gitosis-admin 里面有一个配置文件和一个keydir 目录。
mitosis.conf 是配置用户权限文件
keydir 用户公钥,初始只有一个管理员的公钥文件。
2)增加用户
(1) 提交用户公钥到keydir里面
(2) git add 增加到git
(3) git commit 确认
(4) git push 同步到gitosis服务器。
3)更改授权
编辑gitosis.conf ,push到gitosis服务器生效。
五、增加项目
git iinit --bare 同普通git。
在gitosis.config 编辑项目组和用户。