http://www.kankanews.com/ICkengine/archives/64748.shtml

2人收藏此文章,





发表于4小时前(2013-10-22 16:12) ,

已有26次阅读 ,共1个评论

安装基础包

# yum install perl openssh git

创建git用户

# adduser git 

# passwd git

在git用户家目录下安装gitolite

切换到git用户

# su – git

创建文件夹bin

$ mkdir bin

克隆gitolite源码

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

$ ls 

bin  gitolite

安装gitolite

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

$ cd bin/ 

$ 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/gitolite setup -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 new one 

WARNING: /home/git/.ssh/authorized_keys missing; creating a new one

$ 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’t be established. 

RSA key fingerprint is d4: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 of known 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分配权限

# cd gitolite-admin/conf/ 

# vim gitolite.conf

默认内容为:

repo gitolite-admin 

    RW+ =   admin 

repo testing 

    RW+ =   @all

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

repo gitolite-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 <file>…” to update what will be committed) 

#   (use “git checkout — <file>…” to discard changes in working directory) 



#       modified:   conf/gitolite.conf 



# Untracked files: 

#   (use “git add <file>…” to include in 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 <root@app-node-V-CC.(none)> 

Your name and email address were configured automatically based 

on your username and hostname. Please check that they are accurate. 

You can suppress this message by setting them explicitly: 

    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 it with: 

    git commit –amend –author=’Your Name <you@example.com>’ 

2 files changed, 6 insertions(+), 0 deletions(-) 

create mode 100644 keydir/test123.pub

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

# git push origin master 

Counting objects: 10, done. 

Delta compression using up to 2 threads. 

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 empty repository. 

$ ls 

myFirstRepo

test123用户初始化myFirstRepo库

$ touch test.sh 

$ git add test.sh 

$ git status 

# On branch master 



# Initial commit 



# Changes to be committed: 

#   (use “git rm –cached <file>…” to unstage) 



#       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 

* [new branch]      master -> master

SSH非22端口通信

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

$ vim ~/.ssh/config

添加 如下内容

host ${ip_of_gitolite_server} 

port ${post_of_yours}

ubuntu12.04上安装gitolite,照猫画虎就行

声明:OSCHINA 博客文章版权属于作者,受法律保护。未经作者同意不得转载。

CentOS6.*安装gitolite的更多相关文章

  1. 安装gitolite,并ssh公钥无密码登录

    安装gitolite,并ssh公钥无密码登录 gitolite是管理git版本库的一种方案,它将git版本库的管理信息放在了一个特殊git版本库里.gitolite与linux操作系统集成了,需要使用 ...

  2. Centos6 安装vnc

    Centos6 安装vnc 1. 安装 使用yum方式安装 yum install tigervnc-server tigervnc #启动 vncserver #重启动 /etc/init.d/vn ...

  3. centos6 安装vsftpd

    centos6 安装vsftpd vsftpd一般选择yum安装,以下是安装和配置过程 如果是centos6想要安装的话一般是编译安装 1.安装 yum安装 yum install vsftpd 编译 ...

  4. oracle 11g centos6 安装

    选型:32位的内存是个瓶颈,已经是64位的时代了.使用64位的CentOS6 和 64位的Oracle 11g R2在虚拟机器安装,采用hostonly方式设置网络注意:能上网的网卡要设置一下ICS( ...

  5. CentOS6 安装Sendmail + Dovecot + Roundcubemail

    前言 本文是继CentOS6 安装Sendmail + Dovecot + Squirrelmail 关于邮箱服务器配置的第二篇文章,因为关于使用Sendmail进行相关配置的文章.资料等太老,而且资 ...

  6. centos6 安装配置ss笔记

    2018-05-17 centos6 安装配置ss笔记 操作环境:Centos 6 x86_64 bbr 服务器地址:美国 1.准备VPS 在https://www.bwh1.net可购买,购买时已默 ...

  7. Centos6安装Percona-tools工具

    Centos6安装Percona-tools工具 环境:centos6.x yum -y install perl-DBI yum -y install perl-DBD-MySQL yum -y i ...

  8. Centos6安装FreeSWITCH 1.5时./configure问题解决记录

    系统:Centos 6.4 64位: FreeSWITCH版本:1.5 具体的安装过程参考FreeSWITCH 官网wiki (也可以参考我的博客<Centos6安装FreeSWITCH> ...

  9. CentOS6 安装并破解Jira 7

    CentOS6 安装并破解Jira 7 JIRA软件是为您的软件团队的每个成员构建的,用来规划,跟踪和发布优秀的软件. https://confluence.atlassian.... 最低硬件要求及 ...

随机推荐

  1. STM32中GPIO的8种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...

  2. 恶补web之三:http学习

    http是超文本传输协议的简称,该协议设计目的是保证客户机与服务器之间的通信.http的工作方式为客户机与服务器之间的请求-应答协议. 一般来说web浏览器是客户端,计算机上的网络应用程序可能作为服务 ...

  3. 论MVC中的传值

    2个页面分别为Father.cshtml.Child.cshtml 2个控制器分别为FatherController.cs.ChildController.cs 1个js,为Father.js 一.F ...

  4. Word中去除/删除/删掉Equation Chapter (Next) Section 1

    实际问题如图显示 Equation Chapter (Next) Section 1 . 具体操作步骤如下: 1.Word的"格式"菜单--"样式和格式",出现 ...

  5. 关于JQuery Class选择器的一点

    当某个元素的Class为为两个字符串的时候,那用class选择器的时候就必须把两个字符串都写上否则无效 <div class="cla clb">11111<di ...

  6. Android两级导航菜单栏的实现--FragmentTabHost结合ViewPager与Android 开源项目PagerSlidingTabStrip

    http://www.cnblogs.com/aademeng/articles/6119737.html 转载注:简单总结一下,外层Tab用TabHost,类层Tab用Viepager+Framen ...

  7. nginx防盗链

    盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载.尤其热门资源的盗链,对网站带宽的消耗非常大,本文通过nginx的配置指令location来实现简单的图片和其它类型文件的防盗链. ...

  8. 从输入一个URL到页面完全显示发生了什么?

    这是经典的前端问题,主要是对浏览器的工作原理有个理解! 网络通信走的一般是五层因特网协议,详见下图.图片来自于https://images2018.cnblogs.com/blog/882926/20 ...

  9. 如何利用Python网络爬虫抓取微信朋友圈的动态(上)

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  10. 分布式任务调度平台XXL-JOB

    <分布式任务调度平台XXL-JOB>       一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并 ...