linux下的git服务器搭建-gitolite

本方案采用gitolite做git用户权限管理。

  1. 创建git用户,并切换到git用户。
# 需要root权限
useradd -g git git
# 修改git用户密码
passwd git
# 切换用户
su git
  1. 拉取gitolite代码。
git clone https://github.com/sitaramc/gitolite

  1. 安装gitolite。
mkdir $HOME/bin
# 执行gitolite安装脚本
$HOME/gitolite/install -to $HOME/bin
# 可能报错,安装脚本需要perl环境,和perl模块perl-Data-Dumper
# Can't locate Data/Dumper.pm in @INC (@INC contains: 
# /home/git/gitolite/src/lib /usr/local/lib64/perl5 /usr/local/share/perl5 
# /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 
# /usr/share/perl5 .) at /home/git/gitolite/src/lib/Gitolite/Common.pm line 67.
# BEGIN failed--compilation aborted at 
# /home/git/gitolite/src/lib/Gitolite/Common.pm line 67.
# Compilation failed in require at gitolite/install line 15.
# BEGIN failed--compilation aborted at gitolite/install line 15

# 安装perl-Data-Dumper,需要root权限
yum install perl-Data-Dumper.x86_64
#成功后再次执行安装脚本
$HOME/gitolite/install -to $HOME/bin
ls $HOME/bin
# 显示如下,安装成功
commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF
  1. 配置gitolite,需要设置一个管理员用户,例如who
# 将管理员who的ssh公钥copy到目录下,如果公钥不存在,请到对应的目录运行ssh-keygen -t rsa生成
scp [email protected]:~/.ssh/id_rsa.pub ./who.pub
# 初始化git服务,设置who为管理员
bin/gitolite setup -pk ./who.pub
# 初始化后创建了repositories和.gitolite目录
# repositories/gitolite-admin.git是管理员配置仓库
# .gitolite/对应gitolite-admin.git的内容
# 所有配置修改必须由管理员提交到gitolite-admin.git

查看 .gitolite/conf/gitolite.conf下的文件,如下

repo gitolite-admin
RW+     =   who

repo testing
RW+     =   @all

表示who具有gitolite-admin仓库的读写权限。
所有人都有testing仓库的读写权限。所有人指的是在 `.gitolite/keydir中放置了ssh公钥的人。

  1. 现在可以登录who的账号,然后拉取gitolite管理仓库,进行配置修改,修改后push到服务器,修改即时生效。
ssh [email protected]
# 如果clone失败,说明之前配置管理员的ssh公钥和当前用户的私钥不匹配
git clone [email protected]:gitolite-admin
ls gitolite-admin
  conf  keydir
# do some change, add & commit
# 添加用户:将新用户的ssh公钥放置在keydir中,即可添加用户,并在conf/gitolite.conf中配置用户权限。
# 建立仓库:在conf/gitolite.conf中增加repo可以创建新仓库,并添加用户权限
git push

你可能感兴趣的:(linux下的git服务器搭建-gitolite)