git服务器搭建.md 3.8 KB

##简介

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

在上面的示例中,我们演示了很多授权指令。

  • 第1行,定义了用户组 @admin,包含两个用户 admin和 wangsheng。
  • 第3-4行,定义了版本库 gitolite-admin。并指定只有用户 admin 才能够访问,并拥有读(R)写(W)和强制更新(+)的权限。
  • 第6行,通过正则表达式定义了一组版本库,即在 ossxp/ 目录下的所有版本库。
  • 第7行,用户组 @admin 中的用户,可以在 ossxp/ 目录下创建版本库。创建版本库的用户,具有对版本库操作的所有权限。
  • 第8行,所有用户都可以读写 ossxp 目录下的版本库,但不能强制更新。
  • 第9行开始,定义的 testing 版本库授权使用了引用授权语法。
  • 第11行,用户组 @admin 对所有的分支和里程碑拥有读写、重置、添加和删除的授权。
  • 第12行,用户 junio 可以读写 master 分支。(还包括名字以 master 开头的其他分支,如果有的话)。
  • 第13行,用户 junio 可以读写、强制更新、创建以及删除 pu 开头的分支。
  • 第14行,用户 pasky 可以读写 cogito 分支。 (仅此分支,精确匹配)。

详细的权限设置请查阅官方文档

post-receive

#!/bin/bash

unset  GIT_DIR
/usr/bin/git --work-tree=/tmp/pyweb --git-dir=/home/git/repositories/pyweb.git checkout -f

可以使用fab安装