gitolite安装及配置教程centos7

2023-11-11

 

1. 安装依赖包

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y

 

2.安装 Git

yum -y install git

 

3.创建git用户

useradd git
passwd git
# 输入再次git用户的密码

# 切换到git用户
su git

4.获取Gitolite版本库并安装配置

   4.1 获取gitolite

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

  4.2 创建bin目录并安装gitolite

mkdir /home/git/bin
gitolite/install -to /home/git/bin

 

如果是CentOS7在安装可能会报如下错误

 

原因是:缺少 Data-Dumper-2.154.tar.gz这个包,直接下载安装就ok了

wget http://www.cpan.org/modules/by-module/Data/Data-Dumper-2.154.tar.gz
tar xvzf Data-Dumper-2.154.tar.gz
cd Data-Dumper-2.121
perl Makefile.PL
make
make install

 

5. 配置gitolite管理员

  gitolite 使用特殊的版本库gitolite-admin 来管理用户和版本库,所以需要创建一个管理员来管理所有的用户和版本库

  5.1 生成公钥

  用git用户生成公钥(注:如果你是接着上面一直做下来的,那么只需要输入cd ,然后回车,则就进入了该用户的目录,如果不是git用户,则需要输入su – git,来切换到git用户) 

  •   配置管理员识别
git config --global user.name "admin"
git config --global user.email "admin@XX.com"

 

  •   生成ssh公钥
cd 
ssh-keygen -t rsa

  然后一路回车。。。

  生成的公钥与私钥在 /home/git/.ssh/ 目录下

 

   5.2 修改.ssh/id_rsa.pub 为admin.pub(为什么要改成admin.pub 因为gitolite根据这个文件名来设立帐号.我这里用admin

mv .ssh/id_rsa.pub admin.pub

 

  5.3 使用管理员公钥安装gitolite(然后去/home/git/repositories 里面,可以看见仓库文件.gitolite-admin.git 和test.git 一个是管理仓库的,一个是测试用)

/home/git/bin/gitolite setup -pk admin.pub

 

  5.4 生成管理员管理仓库(不需要输密码)

git clone git@127.0.0.1:gitolite-admin

 

  进入仓库后可以看到conf 和keydir ,conf/gitolite.conf 是添加用户/仓库的配置, keydir 是放对应用户的公想·x钥.并且此时,admin.pub这个公钥可以删除了

 

  5.5 编辑gitolite.conf

vim gitolite-admin/conf/gitolite.conf

  完成如下图:(可以在项目前面添加文件路径)

 

 

说明:

定义两个用户组:dev、test

定义三个版本库:gitolite-admin、testing、xk-edu

用户组可以设置多个用户,用空格分开,RW+ 是最高权限(读写删)

5.6权限详解:

权限配置在gitolite.conf中进行,注释用#表示。
C

C 代表创建。仅在 通配符版本库 授权时可以使用。用于指定谁可以创建和通配符匹配的版本库。

R, RW, 和 RW+

R 为只读。RW 为读写权限。RW+ 含义为除了具有读写外,还可以对 rewind 的提交强制 PUSH。

RWC, RW+C

只有当授权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可以使用该授权指令。其中 C 的含义是允许创建和正则引用匹配的引用(分支或里程碑等)。

RWD, RW+D

只有当授权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可以使用该授权指令。其中 D 的含义是允许删除和正则引用匹配的引用(分支或里程碑等)。

RWCD, RW+CD

只有当授权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可以使用该授权指令。其中 C 的含义是允许创建和正则引用匹配的引用(分支或里程碑等),D 的含义是允许删除和正则引用匹配的引用(分支或里程碑等)。

-

 是一条禁用指令。只对写操作起作用,即禁用用户的写操作。
 
接下来实际分析一个稍微复杂一些的配置文件

1   @admin = git keven admin1 admin2
2   @devteam = dev1 dev2 dev3 fish
3 
4   repo gitolite-admin
5       RW+                 = git keven
6 
7   repo Projects/.+
8       C                   = @admin
9       RW                  = @all
10 
11  repo testing
12      RW+                  =   @admin
13      -                    =   fish
14      RW      master       =   @dev
15      RW+     dev          =   dev1
16      RW      wip$         =   dev2


逐行解释:

 

1: @admin用户组有git keven admin1 admin2四个用户
2:@devteam用户组有dev1 dev2 dev3 fish四个用户
4:对于gitolite-admin仓储
5:git keven两个用户拥有读/写/强制更新的权限
7:对于Projects下所有的git仓储(/.+代表递归所有)
8:@admin用户组拥有创建仓储的权限
9:所有人均可读/写
11:对于testing.git
12:@admin用户组拥有读/写/强制更新的权限
13:fish是新手,对其屏蔽写的权限。因为其属@dev组,则还只剩下R 读的权限
14:@dev用户组对master开头的分支拥有读/写权限
15:dev1这个用户对dev开头的分支拥有读/写/强制更新的权限
16:dev2这个用户对于wip分支(严格匹配)具有读/写权限
 


冷门用法,需要用户对gitolite有一定了解
有的时候用户可能需要在服务器端创建属于自己的仓储,这个时候就需要像下边这样:

1  @admin = git keven admin1 admin2
2  repo pub/CREATOR/.+$
3      C       =   @all
4      RW+     =   CREATOR
5      R       =   @admin


每个用户都可以在users/<自己的用户名>目录下创建属于自己的仓储,而这个仓储,自己拥有完整的权限,管理员只有读权限。
注:RW+ = CREATOR丢失会导致只能init空仓储而不能向上推送内容。
用法:
在用户shell中,进入要提交至服务器的仓储,执行:
git push git@server:pub/<username>/somegit.git <branch>
 
用户可以通过ssh git@server perms对仓储权限进行设置,允许其他用户拥有写权限等。
添加读权限是READERS,读写权限是WRITERS
操作:
 

ssh git@server perms pub/<username>/somegit READERS user1
ssh git@server perms pub/<username>/somegit WRITERS user2


 

   5.7 分别把添加上去的用户的公钥放到/home/git/gitolite-admin/keydir目录下

  

 

  5.7 把修改添加提交到版本库

cd /home/git/gitolite-admin
git add keydir/test.pub conf/gitolite.conf    添加指定文件
git add .    添加所有文件到git
git commit -am "new project and add user"    引号里面是提交说明
git push origin master    第一次要加origin master,以后直接git push即可

 

  5.8 提交完成后,查看管理员仓库多了个刚才新建的版本库

 

5.9 远程创建/删除仓库

创建:
关于创建仓储,方法有三种:
a. 登录远程服务器创建
ssh登录服务器,切换至git用户,进入相关目录,创建某仓储

mkdir somegit.git
cd somegit.git
git init --bare


创建完毕
b.修改gitolite.conf创建仓储
打开gitolite-admin/conf/gitolite.conf,添加:

repo testing2
    RW+    =  @all


保存修改,提交。

git@linux-dev:~/gitolite-admin$ git commit-m'add test2'
[master b26be9a] add test2
1 file changed, 4 insertions(+)
git@linux-dev:~/gitolite-admin$ git push origin master
Counting objects: 7, done.
Delta compression using up to2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4),350 bytes, done.
Total 4 (delta 1), reused0 (delta0)
remote: 初始化空的 Git 版本库于 /home/git/repositories/testing2.git/
To git@127.0.0.1:gitolite-admin
   0c409e4..b26be9a  master -> master


可以看到,gitolite会自动检测配置文件,发现目前没有的仓储会自动才创建。
c.高端大气上档次
对于通配符版本库,即repo Projects/.+类型的,在有创建权限的用户shell中,本地执行:

mkdir somegit
cd somegit
git init
git commit --allow-empty
git remote add origin git@server:Projects/somegit.git
git push origin master


gitolite会直接创建新的仓储。
删除:
1.在conf/gitolite.conf中删除相关仓储配置信息(gitolite不会自动删除服务器上的文件,这点与add不同);
2.登录服务器删除需要删除的仓储。
 

  7. 在客户机上安装git程序,右键选择Git Bash

ssh -T git@192.168.30.220.git

 

   到此gitolite安装成功。

 

 

如果觉得本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行随意打赏。您的支持将鼓励我继续创作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gitolite安装及配置教程centos7 的相关文章

随机推荐

  • 华为云CodeArts DevSecOps系列插件——助力更高效的软件研发

    HDC期间入驻华为云 可参与Toolkit插件抽奖活动 活动链接在文末 一 前言 DevOps的概念想必大家都不陌生 它是一组过程 方法与系统的统称 通过它可以对交付速率 协作效率 部署频率速率 质量 安全和可靠性等进行提升改善 相比传统的
  • 基于NAR神经网络的化工产品价格预测的实现(Matlab)

    clear all clc 清除环境 xlsread styrene xls 读取苯乙烯价格序列 ans 系统会显示具体值 styrene ans 变换为行向量 lag 3 自回归阶数 iinput styrene n length iin
  • JSP实现简单的两数加法运算

    Request对象的作用 1 获取http请求行中信息 请求方式和请求路径 2 获取客户端信息 如ip 3 获取请求资源路径 4 域对象 具体需求 在浏览器上实现两个整数的加法运算 利用request携带参数实现加法运算 测试代码如下
  • Layui实现点击文字、缩略图查看图片功能

    刚完成一个客户需求 同一个页面上要有点击缩略图查看大图功能 也有点击图片名称查看原图的功能 点击缩略图查看大图的功能 点击缩略图查看大图的功能实现用的是layui开发文档内的layer photos 相册层 官方开发文档里photos支持传
  • weboffice 6版本实现在线word

    公司最近需要开发一个在线word功能 开始用pageoffice开发的功能被否决因为pageoffice的版权问题 后采用点聚weboffice的免费版开发 因为多个页面需要使用在线word功能 对于weboffice提供的activeX对
  • PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计

    今天继续给大家介绍渗透测试相关知识 本文主要内容是PHP代码审计示例 淡然点图标系统SQL注入漏洞审计 免责声明 本文所介绍的内容仅做学习交流使用 严禁利用文中技术进行非法行为 否则造成一切严重后果自负 再次强调 严禁对未授权设备进行渗透测
  • Intellij多行同时缩进或者同时空格

    在使用JetBrains旗下的集成软件 如IDEA Pycharm PhpStorm Clion等时 通常需要整体向前或者向后缩进代码 以更加美观地编写代码 此时 可通过以下两个快捷键实现该功能 1 代码整体向后缩进 选中多行代码 按下ta
  • day9:JAVA中while的用法

    一 while循环 while循环是先判断条件是否为真 如果条件为真 则执行循环体 语句形式 while 循环条件 一条语句 多条语句 循环体 二 do while循环 do while循环是先执行循环体 再根据条件确定是否能在执行循环体
  • 【RabbitMQ】Consumer之消费模式、消息确认与拒绝 - 基于AMQP 0-9-1

    这篇文章主要和大家分享RabbitMQ Consumer端的知识点 主要包括Consumer的消费模式 消息是如何确认以及如何拒绝的 当消息拒绝之后 如何让消息重新进入队列 推模式 RabbitMQ支持推和拉两种消费模式 推模式就是由Bro
  • Windows下命令行修改IP及DNS

    需求 在频繁更换网段的情况下 通过动本修改比较方便 修改IP netsh interface ip set address 以太网 static 192 168 1 136 255 255 255 0 192 168 1 1 修改DNS n
  • 原生input实现上传文件

    1 先设置一下input 在change事件传一个参数
  • envi的纹理特征统计量_数据特征的选取

    图像特征的提取和选择是图像处理过程中很重要的环节 对后续图像分类有着重要的影响 并且对于图像数据具有样本少 维数高的特点 要从图像中提取有用的信息 必须对图像特征进行降维处理 特征提取与特征选择就是最有效的降维方法 其目的是得到一个反映数据
  • STM32学习笔记:gps两种解码的方式

    做为现在的物联网行业 手持设备中 缺少不了的就是GPS定位功能 GPS模块和STM32的串口进行通信 将GPS的数据发送给M3的串口 由M3进行GPS协议的解码 解析出来后保存在响应的结构体中 在进行显示 这里分别介绍2中解析协议的方法 第
  • 数据中心网络的电路交换域

    buffer 的意义在用带宽平滑统计突发 流量波动越大 统计复用能效越高 假设没有 buffer 将大量溢出和空载并存 但如果流量是可预期的 也可以转向相反的方向 比如虚电路 数据中心与 Internet 不同 流量类型相对固定 典型的如
  • java封装与继承

    封 装 防止用户在main 方法中设置错误变量数值 因此采用private关键字封装 私有化后主函数将无法直接调用被private定义的属性 方法 构造器和内部类 体现 私有化 private 后 因无法直接调用 所以将提供公共 publi
  • kNN处理iris数据集-使用交叉验证方法确定最优 k 值

    基本流程 1 计算测试实例到所有训练集实例的距离 2 对所有的距离进行排序 找到k个最近的邻居 3 对k个近邻对应的结果进行合并 再排序 返回出现次数最多的那个结果 交叉验证 对每一个k 使用验证集计算 记录k对应的错误次数 取错误数最小的
  • python 批量创建文件夹

    批量创建文件夹 文件夹的名称如果在一个excel中 那就先获取excel中的数据 转成list 获取这个excel中的某一列的数据 使用pandas的情况注意数据格式是Dateframe 转成list import pandas as pd
  • 【Kubernetes系列】工作负载资源之Deployment

    文章目录 概述 Deployment用例 创建 Deployment Deployment 状态 更新 Deployment 回滚 Deployment Deployment 规约 Pod 模板 副本 选择算符 策略 进度期限秒数 最短就绪
  • java为什么还有基本数据类型

    Java既然是面向对象的 宣称一切都是对象 那为什么还有基础类型 基本数据类型是用的最频繁的类型 而且占用存储空间小 可以把它们存入栈中 实现快速的操作 而他们的封装类Integer等 必需创建实例 在堆中开辟内存 既消耗资源 又耗费时间
  • gitolite安装及配置教程centos7

    1 安装依赖包 yum install curl devel expat devel gettext devel openssl devel zlib devel perl devel y 2 安装 Git yum y install gi