gitolite服务部署:linux
1,在git服务器端安装git并建立git用户。git
yum install -y gitgithub
useradd git 正则表达式
2,生成gitolite的管理帐户,这个帐户也能够在git服务器端生成,也能够在本身的客户端生成。(为了防止人员离职,致使管理员丢失,建议在git服务器端生成。我这里是在git服务器端生成管理员用户的)vim
su - gitbash
ssh-keygen 服务器
cp /home/git/.ssh/id_rsa.pub /tmp/admin.pubssh
屡次回车,生成秘钥对,找到~/.ssh/id.rsa.pub 上传到git服务器的/tmp上,并命名为admin.pubide
3,切换到git用户,并确保~/.ssh/authorized_keys文件为空或者不存在测试
rm -f ~/.ssh/authorized_keys
4,安装gitolite
git clone git://github.com/sitaramc/gitolite #下载gitolite软件
mkdir -p $HOME/bin #建立存放gitolite相关命令的目录
gitolite/install -to $HOME/bin #安装gitolite,若是执行这个报错,请先执行 yum install -y perl-Time-HiRes。
echo "PATH=$PATH:$HOME/bin" >> .bashrc #将gitolite命令加入环境变量中,建议退出终端,从新进入。
gitolite setup -pk /tmp/admin.pub #将客户端的用户配置为git的管理员,其实就是将admin.pub的公钥添加到authorized_keys里面去了。
5,查看~/.ssh/authorized_keys 里面是否已经有添加进去的公钥
cat ~/.ssh/authorized_keys
另外,安装完成后,咱们能够在$HOME下看到一个repositories目录,里面有两个仓库,分别为gitolite-admin和testing,其中gitolite-admin为管理仓库。
6,克隆gitolite-admin仓库
cd /tmp
git clone git@127.0.0.1:gitolite-admin
进入gitolite-admin仓库,会看到两个目录,分别为keydir和conf,其中keydir目录用来管理用户,在其中能够看到默认有一个文件叫作admin.pub,正是咱们以前生成的管理用户的公钥文件.
查看conf里面的配置文件:
[git@iz2ze0n2ws2p2jpw1i9fd4z conf]$ cat gitolite.conf repo gitolite-admin RW+ = admin repo testing RW+ = @all
能够简单的发现 repo 定义仓库名
RW+ 表示权限 可读可写可强制更新
admin 表示admin用户,即admin用户能够对gitolite-admin这个仓库有可读可写可强制更新权限。
7,添加用户
添加用户其实蛮简单,只要在管理员克隆下来的gitolite-admin中,将用户添加到conf/gitolite.conf中,并将要添加用户的pub文件放入keydir中便可,而后push到git服务器中便可。
我这里添加一个xiaobai用户,并设置为管理员。
首先在原来的admin用户下克隆代码(上面已经克隆了):
cd /tmp/gitolite-admin
vim /conf/gitolite.conf
上传xiaobai用户的公钥到keydir中
执行git相关命令,将变化的内容推送到git服务器上。
git add . git commit -m 'add xiaobai user to admin' git push
切换到小白帐户,测试建立用户是否成功,克隆代码
git clone git@git服务器地址:gitolite-admin
以下
8,添加仓库,主要是更改gitolite.conf文件,定义1个repo便可。
9,权限说明
经常使用的配置: 1,定义组 @admin=xiaobai xiaoa #定义一个admin组,组员有xiaobai,xiaoa 2,定义一个仓库 repo spider 3,@all 全部用户 repo spider RW = @all #表示全部用户对spider仓库有读写权限
具体的能够参考以下:
1 @admin = breezey chenliang 2 repo gitolite-admin 3 RW+ = breezey 4 repo ossxp/.+ 5 C = @admin 6 RW = @all 7 repo testing 8 RW+ = @admin 9 RW master = junio 10 RW+ pu = junio 11 RW cogito$ = pasky 12 RW bw/ = linus 13 - = somebody 14 RW tmp/ = @all 15 RW refs/tags/v[0-9] = junio 咱们先对该示例文件做一个简单的说明,以方便你们对受权文件有一个基本的了解: 第1行定义了一个admin的组,该组里包含两个用户,分别是breezey chenliang 第2-3行定义了一个版本库gitolite-admin,而且指定breezey用户对gitolite-admin仓库拥有读(R),写(W)和强制更新(+)的权限 第4行经过正则表达式定义了一组版本库,即ossxp目录下的全部版本库 第5行定义admin组的用户能够在ossxp目录下建立版本库 第6行定义全部用户对ossxp目录下的版本库拥有读写的权限,但不能强制更新 第7行定义了一个版本库testing 第8行定义了admin组用户对testing库的全部分支和tag拥有读、写、重置、添加、删除的权限 第9行定义junio用户对master分支有读写的权限,还包括以master开头的全部分支。 第10行定义junio用户对pu分支拥有读写,重置,添加,删除的权限,还包括以pu开头的全部分支 第11行定义pasky用户对cogito分支拥有读写的权限,仅此分支,精确匹配 第12行定义linus用户对bw/拥有读写的权限 第13行定义somebody用户对testing仓库有写的权限 第14行定义全部用户对tmp/拥有读写的权限 第15行定义junio能够读写任意tag,包括以v加上数字开头的tag 组的定义: @admin = breezey chenliang @user = @admin @staff user1 版本库的定义: repo ossxp/.+ #匹配ossxp目录下的全部版本库 repo myrepo.$ #匹配以myrepo.结尾的版本库 repo sandbox/test1 #建立sandbox下的test1库 受权关键字: C: C表明建立。仅在符版本库受权时可使用。用于指定谁能够建立与通配符匹配的版本库。 R,RW,RW+: R为只读,RW为读写,RW+为读写及强制push RWD,RW+D: 只有当受权指令中定义了正则引用(正则表达式定义的branch、tag等),才可使用该受权指令。其中 D 的含义是容许删除和正则引用匹配的引用(branch or tag) RWCD,RW+CD: 只有当受权指令中定义了正则引用(正则表达式定义的branch、tag等),才可使用该受权指令。其中 C 的含义是容许建立和正则引用匹配的引用(branch or tag),D的含义是容许删除和正则引用匹配的引用(branch or tag ) -: 减号(-)是一条禁用指令,只对写操做起做用,不会对用户的读操做施加影响。