参考链接:https://www.jianshu.com/p/a0eb79fa5b8d
系统
虚拟机:vitualbox 系统:Centos7
下载gitollite
1.添加gitolite依赖包
$ yum install 'perl(Data::Dumper)'
2.清空服务器段配置的ssh公钥
确保~/.ssh/authorized_keys
文件是空的,或者不存在
3.上传管理员的客户端的ssh公钥到服务器上
把管理员电脑的sshid_rsa.pub
文件复制到服务器的 $HOME/yourname.pub
$ scp /Users/xxx/.ssh/id_rsa.pub git@your ip address:/xiaoxiong.pub
4.安装配置gitolite
用git账号登录,执行以下命令:
$ su git ##如果没有权限,则使用命令chown -R git:git /home/git
$ cd /home/git
$ git clone https://github.com/sitaramc/gitolite
$ mkdir -p $HOME/bin ## 必须项
$ ./gitolite二进制/install -to $HOME/bin ##用下载下来的仓库中的insall执行安装操作
$ ~/bin/gitolite setup -pk ~/YourName.pub ##把上传到服务器的 管理员的公钥setup到gitolite中
$ ls /home/git ##安装完成后如下所示
drwxr-xr-x 7 git git 4096 Apr 3 23:50 bin # 我们创建的存放gitolite二进制
drwxrwxr-x 6 git git 4096 Apr 3 23:40 gitolite
drwx------ 6 git git 4096 Apr 3 23:52 .gitolite
-rw------- 1 git git 7130 Apr 3 23:52 .gitolite.rc
-rw------- 1 git git 398 Apr 3 23:39 malun.pub # 管理员的公钥
drwxrw---- 3 git git 4096 Apr 3 23:40 .pki
-rw------- 1 git git 19 Apr 4 00:26 projects.list # 仓库列表(gitolite自动创建)
drwx------ 5 git git 4096 Apr 4 00:26 repositories # 存放所有仓库文件夹
drwx------ 2 git git 4096 Apr 4 15:50 .ssh
# repositories目录下已经有两个git仓库了
# .
# |-- gitolite-admin.git ## 管理配置权限的仓库
# `-- testing.git # 测试仓库
好了,到此位置,管理员就可以直接把默认的远程管理的仓库gitolite-admin直接clone到本地进行管理git服务了。
5.管理员在本地管理和配置服务器端的仓库
下载服务器端的远程管理仓库
# 下载远程管理仓库, 请把aicoder.com换成你自己服务器的域名或者ip
$ git clone git@aicoder.com:gitolite-admin
$ cd gitolite-admin
# 目录结构如下:
# .
# ├── conf # 配置文件夹
# │ └── gitolite.conf # 配置权限的文件
# └── keydir # 客户端的公钥文件夹,所有伙伴的公钥要放到此目录下
# └── malun.pub
6.gitolite的权限配置
-
添加其他人
把小伙伴的公钥发给管理员。管理员添加到gitolite-admin仓库的keydir目录下,注意文件名字格式为username.pub,username就是配置权限时的用户名。
-
配置用户对仓库的读写权限
直接修改conf文件夹下的,gitolite.conf文件。简单解释下几个用法:
-
repo代表仓库的意思,如果新添加一个repo,代表服务端新建一个空仓库,仓库push到服务端后会自动创建。
-
RW 代表可读可写
-
@all 代表所有人。
-
master和 dev代表分支
-
参考:
@admin = malun
@om = malun bcd
repo gitolite-admin
RW+ = malun
repo testing
RW+ = @all
repo om
RW+ = @admin
RW+ master = @admin
RW+ dev = @om
- 应用修改到服务器端
做好配置后,由管理员把修改push到服务器端,会自动处理。
$ git add conf
$ git add keydir
$ git commit -m "added foo, gave access to alice, bob, carol"
$ git push
此时登录服务端,查看/home/git/repositories/目录下是否有对应的仓库被添加。
网友评论