作者原创 请尊重知识。
第一步 配置本地、服务器git环境 省略。
第二步 创建服务器git账户 省略。
第三步 在服务器安装gitolite
3.1 设置gitolite工作目录
#cd /home/git
#chown -R git:git /home/git
#chmod -R 2755 /home/git
请尊重知识,请尊重原创 更多资料参考请见 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1
3.2下载gitolite
#git clone git://github.com/sitaramc/gitolite.git
3.3安装gitolite
#su git
#cd ./gitolite
#mkdir -p ~/bin
#./install -to ~/bin
#echo "PATH=$PATH:$HOME/bin" >> ~/.bashrc
#source ~/.bashrc 使环境变量生效
3.4 生成公钥与私钥
下一步需要使用到管理员的公钥,在客户端生成公钥与私钥,把公钥上传到git服务器
为了方便,我在git服务器本地生成公钥和私钥,也在git服务器本地进行测试。其实把私钥拷贝到客户端使用也可以。
#su root 切换到root用户
#ssh-keygen -t rsa -f jingfn
下面一直输入“回车”就可以,生成的公钥和私钥在当前下面
把jingfn.pub复制到根目录/下
#cp jingfn* /
将公钥jingfn.pub 私钥jingfn文件 权限修改为git
#chown git jingfn*
3.5 setup
#su git
#cd ~/bin
#./gitolite setup -pk /jingfn.pub
这一步容易出现 如下错误
FATAL: '/jingfn.pub' not a readable file
FATAL: '/jingfn.pub' must have exactly one line
请仔细检查jingfn.pub文件的所有权是否是git. 可以考虑重新生成。
此ppk文件是客户端访问服务器的ssh密钥文件。在克隆的时候需要用到,
在提交代码的时候 同样用到。只要使用torioseGit软件,本地一般会有pageant服务并且出现在桌面右下角。
点击开 add key 将ppk文件加进去即可。
将会显示下面的初始化信息
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
3.6 生成ppk
找到刚刚生成的jingfn(私钥,与公钥一起生成)
下载puttygen,运行puttygen,点击Conversions菜单项中的Import key ,
选择在刚刚生成的jingfn文件 ,在puttygen的界面上点击Save private key按钮就可以把私钥转换为ppk的格式了,
并存放好自己的ppk。
3.7 克隆gitolite-admin管理仓库
方法一 使用图形化界面
右键点击 git clone
设置好 url ,其格式为 git:120.24.239.225:gitolite-admin
设置 load putty key 选择刚刚生成并保存的ppk文件。
这时候就可以直接clone了。一般设置了load putty key之后,pull 和push 都是不需要填写密码的。
方法二 使用git bash
前提仍然是 需要先设置好 load putty key,否则不允许通过。
shell> git clone git@120.24.239.225:gitolite-admin.git
提交修改到服务器
shell> git add .
shell> git commit -am "update gitolite conf file"
shell> git remote rm origin
shell> git remote add origin git@120.24.239.225:gitolite-admin.git
shell> git push origin master
方法三 在Linux客户端直接克隆
shell> git clone git@120.24.239.225:gitolite-admin.git
提交修改到服务器
shell> git add .
shell> git commit -am "update gitolite conf file"
shell> git remote rm origin
shell> git remote add origin git@120.24.239.225:gitolite-admin.git
shell> git push origin master
3.8 测试
clone到本地的gitolite-admin 仓库,其结构为 keydir 和 conf
keydir 用于存放需要访问各个仓库的客户端公钥,conf下的gitolite.conf 文件用于配置客户端的权限。
repo gitolite-admin
RW+ = jingfn
repo testing
RW+ = @all
在编辑gitolite.conf文件之前,服务器仓库testing.git 是可以正常被clone盗本地的,并且可以写入新的文件。
编辑gitolite.conf文件 去除testing 仓库下的所有用户
repo gitolite-admin
RW+ = jingfn
repo testing
这时候在本地 不管是push 还是pull 都是不被允许的。
到这里 基本完成了gitolite的权限配置。
3.9 用户组定义
repo gitolite-admin
RW+ = jingfn
repo testing
RW+ = @all
@admin = jingfn
@android_admin = jinchengLi jingfn
@android = jinchengLi ouxch fwl jingfn joie luoyy Aaron dongzhuoyue
@java_admin = jingfn
@java =jingfn joie wenquan zhengbobo
repo gitolite-admin
RW+ = @admin
repo android/..*
C = @android_admin @admin
RW = @android
repo java/..*
C = @java_admin @admin
RW = @java
repo kp-android
C = @android_admin
RW = @android
repo kp-android-old
C = @android_admin
RW = @android
repo kp-set-001
C = @java_admin @admin
RW = @java
这里修改了gitolite.conf文件 其权限分配规则是 ,定义了一组超级管理员@admin
以及 android 和java 的超级管理员和普通成员。
C 表示可以在该目录下创建版本库,创建版本库的用户拥有版本库的所有权限。
我们只需要添加一个 repo 并且push gitolite-admin 到服务器,服务器会自动新建
我们需要的新仓库,我们只需在本地客户端指向服务器git即可提交。