Centos下安装gitolite+git

2023-11-09

一直以来我都是用SVN的,但最近做迭代开发、多分支时,发现SVN使用起来极不方便。因此打算换成git做源码管理。git的理论以及特性本文就不做讲解了,本主主要讲解怎么安装,配置git、以及git权限管理服务gitolite.

组网结构

式

git服务器是用于存储git仓库的服务器,所有git用户都此服务器上仓库中clone仓库到本地,也可以将代码提交到git服务器上的仓库中。简单的说,此服务器类似于svn服务器,做共享数据用。git本身是没有权限管理的。若要像SVN那样管理权限,需要搭建gitolite,因此git权限管理服务器用于git权限配置。

实验组网结构

事实上,安装后gitolite后,只是在git服务器上有一个管理权限的仓库(gitolite-admin.git),此仓库中下的gitolite-admin/conf中的配置文件,就是用于配置git服务器上所有仓库的权限。因此,只要有权限能够修改gitolite-admin/conf 下的配置文件,并提交到仓库中,即可对git做权限管理。
因此,在本文的实验环境中,在git服务器上创建了两个用户 gitadmin、mgit,分别用于git权限配置,以及git服务。

源码安装git

以mgit用于登录到git服务器

> wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz  #下载git源码包,可以到 https://mirrors.edge.kernel.org/pub/software/scm/git/ 此地址下载其它版本包。
> tar -xf git-2.9.5.tar.gz  
> cd git-2.9.5/
> ./configure  
> make  # 编译git源码

经过以下几个命令后,即安装完成,通过 git --version 可查看安装的git版本。若提示没有相关 命令,执行一下 make install

问题1:若执行configure时,报以下错误:
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /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 Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] 错误 2
make: *** [perl/perl.mak] 错误 2

解决方法:
安装Perl5
> yum install perl-ExtUtils-MakeMaker

问题2: make过程中,报以下错误
GIT_VERSION = 2.9.5
    * new build flags
    CC credential-store.o
In file included from credential-store.c:1:0:
cache.h:40:18: fatal error: zlib.h: No such file or directory
 #include <zlib.h>
                  ^
compilation terminated.
make: *** [credential-store.o] Error 1

解决方法:
make时报缺少zlib.h,需要执行在下命令:
yum install zlib-devel

安装gitolite

以mgit登录到服务器

> git clone https://github.com/sitaramc/gitolite.git  # 如果执行此命令时,报“Unable to find remote helper for 'https'”错误,将https改为git再次重试。
> cd gitolite
> chmod +x install
> mkdir /home/mgit/bin  #gitolite相关的二进制文件的安装目录
> /home/mgit/gitolite/install -to /home/hqgit/bin/   #将gitolite二进制文件安装到bin目录下

如此gitolite已安装完成。若在安装过程中报以下错误:
Can't locate Data/Dumper.pm in @INC (@INC contains: /home/hgit/gitolite/tt/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/hgit/gitolite/tt/gitolite/src/lib/Gitolite/Common.pm line 65.
BEGIN failed--compilation aborted at /home/hgit/gitolite/tt/gitolite/src/lib/Gitolite/Common.pm line 65.
Compilation failed in require at ./install line 15.
BEGIN failed--compilation aborted at ./install line 15.

解决方法:
yum install perl-Data-Dumper.x86_64

配置git权限管理员

本环境中用gitadmin用户作为git权限管理员。首先创建此用户,并用gitadmin登录到服务器上。

为管理员生成密钥

 > ssh-keygen   #生成公钥与私钥,并将生成的公钥命名为 gitadmin.pub

gitolite服务本是通过ssh对用户进行鉴权。因此需要为git管理员gitadmin生成密钥。 这此需要重命令的原因是gitolite以文件名作为用户名,添加到gitolite服务中。此处重命名为gitadmin.pub,后续添加到gitolite中的用户名即为gitadmin

添加git管理员

切换到mgit用户:

/home/mgit/bin
./gitolite setup -pk /home/gitadmin/gitadmin.pub  #/home/gitadmin/gitadmin.pub为git管理员的公钥存放路径,命令需要mgit用户有此文件的可读权限

以下命令:

(1)将创建/home/mgit/repositories 目录 ,并在此目录下生成两个仓库 gitolite-admin.git 、 testing.git。
gitolite-admin为git权限管理仓库。gitadmin用户可以clone此仓库,对git权限进行配置。
testing.git为测试仓库。
后续通过gitolite-admin配置文件,添加的其它仓库也将创建在此/home/mgit/repositories 目录下

(2)生成/home/git/projects.list文件

git仓库权限配置

以gitadmin用户登录服务器,执行以下命令:

git clone mgit@192.168.48.200:gitolite-admin   #克隆权限管理仓库

若在操作中,出现以下错误:
正克隆到 'gitolite-admin'...
FATAL: R any gitolite-admin gitadmin DENIED by fallthru
(or you mis-spelled the reponame)
fatal: Could not read from remote repository.

此是由于多次进行了gitolite setup -pk操作,并且公钥还不一样。gitolite setup -pk操作会用户根目录下生成 .gitolite 目录,并将添加的公钥存放到此目录,同时生成相关的权限文件。
解决办法就是删除此目录后,再次执行 gitolite setup -pk即可以了

克隆后,在目录/home/gitadmin/gitolite-admin下有一个conf与keydir目录.
/home/gitadmin/gitolite-admin/conf/gitolite.conf  为权限配置文件,为各仓库配置权限。
/home/gitadmin/gitolite-admin/keydir 目录存放所有用户的公钥,公钥文件名即为用户文件。
配置完成后,git commit提交后,仓库就创建好了

gitolite的具体配置规范,参见gitolite官方文档

 

 

 

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

Centos下安装gitolite+git 的相关文章

随机推荐

  • python简单爬虫实例,爬取CSDN文章

    查看要爬的网页的源代码 准备爬取所有文章和链接 代码 import requests from bs4 import BeautifulSoup url https blog csdn net LI AINY headers User Ag
  • 基于Spark的分布式数据处理和机器学习技术【上进小菜猪大数据】

    上进小菜猪 沈工大软件工程专业 爱好敲代码 持续输出干货 大数据已经成为当今社会中一个重要的资源和挑战 随着数据规模的不断增长 如何高效地处理和分析这些数据成为了一个关键问题 本文将介绍基于Apache Spark的分布式数据处理和机器学习
  • 【机器学习】通俗易懂决策树(原理篇)

    决策树 引言 决策树是什么 怎样利用决策树来帮助我们分类 怎样构建自己的决策树 决策树是一种类似流程图的结构 其中每个内部节点代表一个属性的 测试 例如硬币翻转出现正面朝上或反面朝上 每个分支代表测试的结果 每个叶节点代表一个类标签 在计算
  • flutter_tools/gradle/app_plugin_loader.gradle‘ as it does not exist

    背景 flutter 1 17 hotfix5 因为使用flutter crate 来创建新项目的 在之前的windows电脑能够正常运行 但是在mac电脑上死活运行不上去 查了很久 github上也查看了相关issuer 发现解决问题的方
  • MPP数据库简介及架构分析

    目录 什么是MPP 特性 并行处理 超大规模 数据仓库真正适合什么 典型的分析工作量 数据集中化 线性可伸缩性 MPP架构技术特性 数据库架构分析 Shared Everything Shared Disk Share Memory Sha
  • elastic weight consolidation

    GitHub kuc2477 pytorch ewc Unofficial PyTorch implementation of DeepMind s PNAS 2017 paper Overcoming Catastrophic Forge
  • Springboot简单实现用户登录操作

    从0开始开发SpringBoot vue前后端分离项目 文章目录 从0开始开发SpringBoot vue前后端分离项目 一 创建Springboot项目 二 引入依赖 三 插件推荐 1 Mybatis Log Free 2 Free My
  • c# 代码实现通过域名获取IPV4地址

    c 代码实现通过域名获取IPV4地址 IPHostEntry iPHostEntry Dns GetHostByName www baidu com IPAddress ip iPHostEntry AddressList 0 label1
  • 每日一题(两数相加)

    每日一题 两数相加 2 两数相加 力扣 LeetCode 思路 思路 由于链表从头开始向后存储的是低权值位的数据 所以只需要两个指针p1和p2 分别从链表的头节点开始遍历 同时创建一个新的指针newhead 用于构造新链表 将创建的新节点进
  • 交换两数(不使用中间变量)

    引出问题 说到交换两数的值 对大家来说应该是一个非常简单的任务 但是 我们最常用的方法就是创建一个临时变量 再通过这个临时变量来改变两值 如下 int temp a a b b temp 但是 难道交换两个变量就只有这一种做法吗 方法1 其
  • IntelliJ IDEA写JSP文件出现“cannot resolve method”解决办法

    最近在使用IDEA写JSP文件的时候 有些内置对象出现了cannot resolve method的警告提示 代码运行没有问题 在编写的时候也不会提示 最后请教了万能的搜索引擎 解决了此问题 解决办法 该错误的导致的原因是因为没有在项目中添
  • 利用 Android Studio 和 Gradle 打包多版本APK( applicationIdSuffix)

    在项目开发过程中 经常会有需要打包不同版本的 APK 的需求 比如 debug版 release版 dev版等等 有时候不同的版本中使用到的不同的服务端api域名也不相同 比如 debug api com release api com d
  • Node.js到底是什么?

    前言 Node js是一个基于Chrome V8引擎的JavaScript运行环境 JavaScript是脚本语言 脚本语言需要一个解析器 运行环境 才能运行 若运行在浏览器中 则浏览器就是JavaScript的解析器 运行环境 而对于独立
  • Spark数据分析之pyspark

    Spark数据分析之pyspark 一 大数据简史 从hadoop到Spark 1 hadoop的出现 1 问题 1990年 电商爆发以及机器产生了大量数据 单一的系统无法承担 2 办法 为了解决 1 的问题许多公司 尤其是大公司领导了普通
  • 【VUE】拖动侧边栏以便自由调整左右两侧的宽度

    效果 1 拖动前 2 拖动后 主要代码
  • Python 爬虫爬取豆瓣读书小说类前十页标签

    呜呜呜 小白的爬虫之路 留个记录 一 导入库 import requests from bs4 import BeautifulSoup import sqlite3 二 获取豆瓣读书小说类1 10页网址 获取分页的地址 root url
  • 关于Jquery中ajax方法data参数用法的总结

    data 发送到服务器的数据 将自动转换为请求字符串格式 GET 请求中将附加在 URL 后 查看 processData 选项说明以禁止此自动转换 必须为 Key Value 格式 如果为数组 jQuery 将自动为不同值对应同一个名称
  • 高级API(UDP连接&Map集合&Collection集合)

    UDP协议 DatagramSocket 该对象可以代表接收端也可以代表发送端 DatagramPacket 数据打包对象 数据报对象 将发送的内容通过该对象进行打包 在通过指定的方法将该对象进行传输 1 通过DatagramSocket建
  • STM32学习笔记—I2C通信

    1 I2C介绍 2 I2C通讯过程介绍 3 函数配置 4 代码 1 I2C介绍 i2c总线是nxp公司 philp公司 开发的两线式串行总线 用于连接微控制器及外围设备 它是由数据线SDA和时钟线SCL构成 我们平常使用还会加上一个供电即v
  • Centos下安装gitolite+git

    一直以来我都是用SVN的 但最近做迭代开发 多分支时 发现SVN使用起来极不方便 因此打算换成git做源码管理 git的理论以及特性本文就不做讲解了 本主主要讲解怎么安装 配置git 以及git权限管理服务gitolite 组网结构 git