2014年03月21日

来源:互联网 发布:淘宝闺蜜网址 编辑:程序博客网 时间:2024/05/18 03:20

CentOS6.*安装gitolite


摘要 CentOS6.*上安装gitolite实现git多人协作
linux CentOS git

目录[-]

  • CentOS6.*安装gitolite
  • 安装基础包
  • 创建git用户
  • 在git用户家目录下安装gitolite
  • 配置gitolite管理员
  • 管理员日常管理
  • 客户验证
  • SSH非22端口通信
  • ubuntu12.04上安装gitolite,照猫画虎就行

CentOS6.*安装gitolite

安装基础包

# yum install perl opensshgit

创建git用户

# addusergit 
# passwd git

在git用户家目录下安装gitolite

切换到git用户

# su –git

创建文件夹bin

$ mkdirbin

克隆gitolite源码

$ git clone https://github.com/sitaramc/gitolite.git 
$ ls 
bin  gitolite

安装gitolite

$ ./gitolite/install -to/home/git/bin/

$ cdbin/ 
$ ls 
commands  gitolite gitolite-shell  lib syntactic-sugar  triggers VERSION  VREF

配置gitolite管理员

生成管理员账户的公钥(此处指定本地root用户为管理员,键入回车使用默认值) 

# ssh-keygen


复制管理的公钥 

# cp .ssh/id_rsa.pub/tmp/admin.pub


切换回git用户,为gitolite配置管理员 

$ /home/git/bin/gitolitesetup -pk /tmp/admin.pub 
Initialized empty Git repository in/home/git/repositories/gitolite-admin.git/ 
Initialized empty Git repository in/home/git/repositories/testing.git/ 
WARNING: /home/git/.ssh missing; creating a newone 
WARNING: /home/git/.ssh/authorized_keys missing; creating a newone


$ ls 
bin  gitolite projects.list  repositories

管理员日常管理

管理员clone管理库(此处为本地root用户) 

# git clone git@192.168.213.130:gitolite-admin 
Initialized empty Git repository in /root/gitolite-admin/.git/ 
The authenticity of host '192.168.213.130 (192.168.213.130)' can'tbe established. 
RSA key fingerprint isd4:28:ca:66:58:b6:39:c1:aa:37:58:9a:5b:ed:50:05. 
Are you sure you want to continue connecting (yes/no)?yes 
#此处因为第一次ssh连接,所以需要输入’yes’ 
Warning: Permanently added '192.168.213.130' (RSA) to the list ofknown hosts. 
remote: Counting objects: 6, done. 
remote: Compressing objects: 100% (4/4),done. 
Receiving objects: 100% (6/6), 748 bytes,done. 
remote: Total 6 (delta 0), reused 0 (delta 0)


#pwd 
/root/gitolite-admin 
# ls 
conf  keydir

创建库、添加用户 
例如某test123用户访问git服务器上的myFirstRepo库

test123用户向git服务器管理(此处是之前的服务器本地的root用户)提交自己的ssh无密码公钥

管理员将test123的公钥复制到gitolite-admin/keydir/ 下 

# cp test123.pub/root/gitolite-admin/keydir/

 

管理员创建myFirstRepo库,并给test123分配权限 

# cdgitolite-admin/conf/ 
# vim gitolite.conf

默认内容为: 

repogitolite-admin 
    RW+=  admin 
repo testing 
    RW+=   @all

 

下边定义myFirstRepo库,并且指定用户权限: 

repogitolite-admin 
    RW+=  admin 
repo testing 
    RW+=  @all 
@myGroup=admin test123 
repo myFirstRepo 
    RW+=   @myGroup

 

此处@myGroup是一个组,给myGroup组赋予对myFirstRepo这个库的读、写、推送的权限(详细规则可参考gitolite的readme.txt)

 

管理员将对gitolite-admin的修改(建库、加用户)提交到git服务器

#pwd 
/root/gitolite-admin 
# git status 
# On branch master 
# Changed but not updated: 
  (use "git add ..." to updatewhat will be committed) 
  (use "git checkout -- ..." todiscard changes in working directory) 

     modified:  conf/gitolite.conf 

# Untracked files: 
  (use "git add ..." to includein what will be committed) 

     keydir/test123.pub 
no changes added to commit (use "git add" and/or "git commit-a")

 

 

# git add* 
# git commit -m"AddRepo:myFirstRepo;AddUser:test123" 
[master 4c5a5d0]AddRepo:myFirstRepo;AddUser:test123 
Committer: root <<aclass="smarterwiki-linkify" href="mailto:root@app-node-V-CC.(none)"style="padding: 0px; margin: 0px; color: rgb(255, 131, 115);outline: 0px; font-size:12px;">root@app-node-V-CC.(none)> 
Your name and email address were configured automaticallybased 
on your username and hostname. Please check that they areaccurate. 
You can suppress this message by setting themexplicitly: 
    git config--global user.name "Your Name" 
   git config --global user.email you@example.com 
If the identity used for this commit is wrong, you can fix itwith: 
   git commit --amend --author='Your Name <<aclass="smarterwiki-linkify" href="mailto:you@example.com"style="padding: 0px; margin: 0px; color: rgb(255, 131, 115);outline: 0px; font-size:12px;">you@example.com>' 
2 files changed, 6 insertions(+), 0deletions(-) 
create mode 100644 keydir/test123.pub

 

提示是建议设置用户信息(便于多人协作时辨别),可参照提示命令操作(其实git自动为你添加了)

 

# git push originmaster 
Counting objects: 10, done. 
Delta compression using up to 2threads. 
Compressing objects: 100% (5/5), done. 
Writing objects: 100% (6/6), 859 bytes,done. 
Total 6 (delta 0), reused 0 (delta 0) 
remote: Initialized empty Git repository in/home/git/repositories/myFirstRepo.git/ 
To git@192.168.213.130:gitolite-admin 
48a7307..4c5a5d0  master -> master

 

客户验证

test123用户克隆myFirstRepo库

 

$ git clone git@192.168.213.130:myFirstRepo 
Initialized empty Git repository in/home/test123/myFirstRepo/.git/ 
warning: You appear to have cloned an emptyrepository. 
$ ls 
myFirstRepo

 

test123用户初始化myFirstRepo库

 

$ touchtest.sh 
$ git add test.sh 
$ git status 
# On branch master 

# Initial commit 

# Changes to be committed: 
  (use "git rm --cached ..." tounstage) 

     new file:  test.sh 

$ git commit -m "InitRepo:myFirstRepo" 
$ git push origin master 
Counting objects: 3, done. 
Writing objects: 100% (3/3), 224 bytes,done. 
Total 3 (delta 0), reused 0 (delta 0) 
To git@192.168.213.130:myFirstRepo 
* [newbranch]     master -> master

 

SSH非22端口通信

本地或gitolite服务器使用非ssh默认端口,会出现错误,可通过下列方法解决:

 

$ vim~/.ssh/config

 

添加 如下内容

 

host${ip_of_gitolite_server} 
port ${port_of_yours}


 

0 0