##简介
git 版本管理有很多。有gitolite、gitblit、gitlab。gitlab太大而且我们不需要这么多功能。而且不需要web。
发现Gitblit可以很方便的搭建服务,是用Java编写的,带有web管理界面。
gitolite。使用perl写的相当于简介控制了ssh登录操作。登录必须使用证书登录。根据证书识别用户身份
这里我们采用gitolite
##安装
yum install perl openssh git yum install 'perl(Data::Dumper)'
创建git用户
adduser git
passwd git
切换到git用户
su - git
#获取gitolite
git clone git://github.com/sitaramc/gitolite
# 创建bin目录,用于存放安装后的文件
mkdir -p ~/bin
# 将gitolite安装到bin目录
gitolite/install -to ~/bin
# 使用YourName.pub公钥初始化版本库
gitolite setup -pk YourName.pub
在客户端克隆Gitlite管理库
git clone git@ip:gitolite-admin.git
你可以看到在管理库里,有两个目录, conf/和keydir/,其中conf/下面有个名为gitolite.conf的配置文件。
- conf/gitolite.conf 用于Git项目配置,访问权限设置。
- keydir/ 用于存储用户的SSH public key(公钥)。
增加新用户,就是允许新用户能够通过其公钥访问 Git 服务。只要将新用户的公钥添加到 gitolite-admin 版本库的 keydir 目录下,即完成新用户的添加。管理员从用户获取公钥,并将公钥按照 username.pub 格式进行重命名,然后进入 gitolite-admin 本地克隆版本库中,复制新用户公钥到 keydir 目录,更新到远程版本库即可。
git add.
git commit -m "add user XXX"
git push origin master
在conf/gitolite.conf
文件中添加两行,然后更新到远程版本库即可。
repo gitolite-admin
RW+ = jiangxin
下面我们看一个不那么简单的授权文件:
1 @admin = admin wangsheng
2
3 repo gitolite-admin
4 RW+ = admin
5
6 repo ossxp/.+
7 C = @admin
8 RW = @all
9
10 repo testing
11 RW+ = @admin
12 RW master = junio
13 RW+ pu = junio
14 RW cogito$ = pasky
15 RW bw/ = linus
16 - = somebody
17 RW tmp/ = @all
18 RW refs/tags/v[0-9] = junio
在上面的示例中,我们演示了很多授权指令。
详细的权限设置请查阅官方文档。
post-receive
#!/bin/bash
unset GIT_DIR
/usr/bin/git --work-tree=/tmp/pyweb --git-dir=/home/git/repositories/pyweb.git checkout -f
可以使用fab安装