yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y
yum -y install git
useradd git passwd git # 输入再次git用户的密码 # 切换到git用户 su git
4.1 获取gitolitehtml
git clone https://github.com/sitaramc/gitolite
4.2 建立bin目录并安装gitolitelinux
mkdir /home/git/bin gitolite/install -to /home/git/bin
若是是CentOS7在安装可能会报以下错误git
缘由是:缺乏 Data-Dumper-2.154.tar.gz这个包,直接下载安装就ok了github
wget http://www.cpan.org/modules/by-module/Data/Data-Dumper-2.154.tar.gz tar xvzf Data-Dumper-2.154.tar.gz cd Data-Dumper-2.121 perl Makefile.PL make make install
gitolite 使用特殊的版本库gitolite-admin 来管理用户和版本库,因此须要建立一个管理员来管理全部的用户和版本库正则表达式
5.1 生成公钥shell
用git用户生成公钥(注:若是你是接着上面一直作下来的,那么只须要输入cd ,而后回车,则就进入了该用户的目录,若是不是git用户,则须要输入su – git,来切换到git用户) vim
git config --global user.name "admin" git config --global user.email "admin@XX.com"
cd ssh-keygen -t rsa
而后一路回车。。。服务器
生成的公钥与私钥在 /home/git/.ssh/ 目录下微信
5.2 修改.ssh/id_rsa.pub 为admin.pub(为何要改为admin.pub 由于gitolite根据这个文件名来设立账号.我这里用adminssh
mv .ssh/id_rsa.pub admin.pub
5.3 使用管理员公钥安装gitolite(而后去/home/git/repositories 里面,能够看见仓库文件.gitolite-admin.git 和test.git 一个是管理仓库的,一个是测试用)
/home/git/bin/gitolite setup -pk admin.pub
5.4 生成管理员管理仓库(不须要输密码)
git clone git@127.0.0.1:gitolite-admin
进入仓库后能够看到conf 和keydir ,conf/gitolite.conf 是添加用户/仓库的配置, keydir 是放对应用户的公想·x钥.而且此时,admin.pub这个公钥能够删除了
5.5 编辑gitolite.conf
vim gitolite-admin/conf/gitolite.conf
完成以下图:(能够在项目前面添加文件路径)
说明:
定义两个用户组:dev、test
定义三个版本库:gitolite-admin、testing、xk-edu
用户组能够设置多个用户,用空格分开,RW+ 是最高权限(读写删)
5.6权限详解:
权限配置在gitolite.conf中进行,注释用#表示。
C
C 表明建立。仅在 通配符版本库 受权时可使用。用于指定谁能够建立和通配符匹配的版本库。
R, RW, 和 RW+
R 为只读。RW 为读写权限。RW+ 含义为除了具备读写外,还能够对 rewind 的提交强制 PUSH。
RWC, RW+C
只有当受权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可使用该受权指令。其中 C 的含义是容许建立和正则引用匹配的引用(分支或里程碑等)。
RWD, RW+D
只有当受权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可使用该受权指令。其中 D 的含义是容许删除和正则引用匹配的引用(分支或里程碑等)。
RWCD, RW+CD
只有当受权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可使用该受权指令。其中 C 的含义是容许建立和正则引用匹配的引用(分支或里程碑等),D 的含义是容许删除和正则引用匹配的引用(分支或里程碑等)。
-
是一条禁用指令。只对写操做起做用,即禁用用户的写操做。
接下来实际分析一个稍微复杂一些的配置文件
1 @admin = git keven admin1 admin2 2 @devteam = dev1 dev2 dev3 fish 3 4 repo gitolite-admin 5 RW+ = git keven 6 7 repo Projects/.+ 8 C = @admin 9 RW = @all 10 11 repo testing 12 RW+ = @admin 13 - = fish 14 RW master = @dev 15 RW+ dev = dev1 16 RW wip$ = dev2
逐行解释:
1: @admin用户组有git keven admin1 admin2四个用户 2:@devteam用户组有dev1 dev2 dev3 fish四个用户 4:对于gitolite-admin仓储 5:git keven两个用户拥有读/写/强制更新的权限 7:对于Projects下全部的git仓储(/.+表明递归全部) 8:@admin用户组拥有建立仓储的权限 9:全部人都可读/写 11:对于testing.git 12:@admin用户组拥有读/写/强制更新的权限 13:fish是新手,对其屏蔽写的权限。由于其属@dev组,则还只剩下R 读的权限 14:@dev用户组对master开头的分支拥有读/写权限 15:dev1这个用户对dev开头的分支拥有读/写/强制更新的权限 16:dev2这个用户对于wip分支(严格匹配)具备读/写权限
冷门用法,须要用户对gitolite有必定了解
有的时候用户可能须要在服务器端建立属于本身的仓储,这个时候就须要像下边这样:
1 @admin = git keven admin1 admin2 2 repo pub/CREATOR/.+$ 3 C = @all 4 RW+ = CREATOR 5 R = @admin
每一个用户均可以在users/<本身的用户名>目录下建立属于本身的仓储,而这个仓储,本身拥有完整的权限,管理员只有读权限。
注:RW+ = CREATOR丢失会致使只能init空仓储而不能向上推送内容。
用法:
在用户shell中,进入要提交至服务器的仓储,执行:
git push git@server:pub/<username>/somegit.git <branch>
用户能够经过ssh git@server perms对仓储权限进行设置,容许其余用户拥有写权限等。
添加读权限是READERS,读写权限是WRITERS
操做:
ssh git@server perms pub/<username>/somegit READERS user1 ssh git@server perms pub/<username>/somegit WRITERS user2
5.7 分别把添加上去的用户的公钥放到/home/git/gitolite-admin/keydir目录下
5.7 把修改添加提交到版本库
cd /home/git/gitolite-admin git add keydir/test.pub conf/gitolite.conf 添加指定文件 git add . 添加全部文件到git git commit -am "new project and add user" 引号里面是提交说明 git push origin master 第一次要加origin master,之后直接git push便可
5.8 提交完成后,查看管理员仓库多了个刚才新建的版本库
5.9 远程建立/删除仓库
建立:
关于建立仓储,方法有三种:
a. 登陆远程服务器建立
ssh登陆服务器,切换至git用户,进入相关目录,建立某仓储
mkdir somegit.git cd somegit.git git init --bare
建立完毕
b.修改gitolite.conf建立仓储
打开gitolite-admin/conf/gitolite.conf,添加:
repo testing2 RW+ = @all
保存修改,提交。
git@linux-dev:~/gitolite-admin$ git commit-m'add test2' [master b26be9a] add test2 1 file changed, 4 insertions(+) git@linux-dev:~/gitolite-admin$ git push origin master Counting objects: 7, done. Delta compression using up to2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4),350 bytes, done. Total 4 (delta 1), reused0 (delta0) remote: 初始化空的 Git 版本库于 /home/git/repositories/testing2.git/ To git@127.0.0.1:gitolite-admin 0c409e4..b26be9a master -> master
能够看到,gitolite会自动检测配置文件,发现目前没有的仓储会自动才建立。
c.高端大气上档次
对于通配符版本库,即repo Projects/.+类型的,在有建立权限的用户shell中,本地执行:
mkdir somegit cd somegit git init git commit --allow-empty git remote add origin git@server:Projects/somegit.git git push origin master
gitolite会直接建立新的仓储。
删除:
1.在conf/gitolite.conf中删除相关仓储配置信息(gitolite不会自动删除服务器上的文件,这点与add不一样);
2.登陆服务器删除须要删除的仓储。
ssh -T git@192.168.30.220.git
到此gitolite安装成功。