####安装 git
$ yum install git
####安装 setuptools 需要使用 setuptools 安装 gitosis 来管理 git 用户权限
$ wget https://pypi.python.org/packages/source/s/setuptools/setuptools-3.4.4.tar.gz
$ tar zxvf setuptools-3.4.4.tar.gz
$ cd setuptools-3.4.4
$ python setup.py build
$ python setup.py install
####安装 gitosis
使用 gitosis 控管 User / Project 权限
$ git clone git://github.com/res0nat0r/gitosis.git
$ cd gitosis
$ python setup.py install
####添加用户 git
$ sudo useradd -r -s /bin/sh -c 'git version control' -d /home/git git
$ mkdir -p /home/git
$ chown git:git /home/git
####上传本地公钥
$ ssh-keygen -t rsa #在本地生成rsa密钥和公钥
$ scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp #上传公钥id_rsa.pub到服务器
####在服务端生成管理库
$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
####同步配置文件到本地
$ git clone git+ssh://git@YOUR_SERVER/gitosis-admin.git
####创建新的 repositories
$ cd gitosis-admin
$ vi gitosis.conf #打开gitosis.conf文件,添加一个新的group
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = cpscorpio@localhost
[group workspace]
writable = mytestApp
members = cpscorpio@localhost
这里定义了一个叫 workspace 的组,授予 cpscorpio@localhost 这个用户读写 mytestApp repositories 的权限
$ git commit -a -m "Allow cpscorpio write access to mytestApp" #同步到服务器
$ git push
创建 mytestApp repositories
$ mkdir ~/mytestApp
$ cd ~/mytestApp
$ git init
$ echo "#mytestApp" >> README.MD #随便添加一个文件
$ git remote add origin git@YOUR_SERVER:mytestApp.git
$ git add .
$ git commit -a -m "initial import"
$ git push origin master:refs/heads/master
####增加项目成员
$ cd gitosis-admin
$ cp ~/xiaoli@localhost.pub keydir/ #添加成员公钥
$ git add keydir/xiaoli@localhost.pub
$ vi gitosis.conf #修改 gitosis.conf, 添加 xiaoli@localhost 用户读写 mytestApp
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = cpscorpio@localhost
[group workspace]
writable = mytestApp
members = cpscorpio@localhost xiaoli@localhost
$ git commit -a -m "Granted xiaoli commit rights to mytestApp" #提交修改
$ git push