当前位置: 首页 > news >正文

centos7 安装 gitolite (git服务器)

gitolite简介

轻量级git服务器程序,解决了git权限管理的问题。(git是一个分布式版本控制系统,就是说每个人作为客户端的同时又是服务器)
项目GitHub地址:https://github.com/sitaramc/gitolite
项目官方文档:http://gitolite.com/gitolite/
当前环境:centos 7

安装前准备

  • 在客户端机器安装git,并生成秘钥
    各操作系统安装方法均很简单,请自行安装。
    使用git安装目录下的 usr/bin/ssh-keygen生成rsa秘钥

     ssh-keygen -t rsa 

    然后一路回车到结束。(生成秘钥默认在当前用户目录的.ssh目录下,下面要用)

  • 安装没有安装的依赖包

    yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel perl* git

    需要注意:gitolite对以上软件版本有一定的要求,如果报错,升级软件即可。

    yum update -y  <软件名>
  • 创建用户

    useradd git
    passwd git
    如果已有用户,请确认
    1. ~/.ssh/authorized_keys文件是空的或者不存在
    2. 客户机ssh-keygen生成的id_rsa.pub公钥已经拷贝到:~/YourName.pub ,改成自己的名字,为了多人协作时便于区分,并不是硬性规定

开始安装

su git  <!-- 切换到git用户 -->
git clone git://github.com/sitaramc/gitolite
mkdir -p ~/bin   <!-- 一定要创建bin文件夹 -->
~/gitolite/install -to ~/bin
~/bin/gitolite setup -pk YourName.pub <!-- 生成下面所要用的管理库gitolite-admin和测试用库testing -->

安装完成

添加用户和仓库

下载管理仓库

git clone git@host:gitolite-admin.git

打开看到两个文件夹:
conf:存放配置文件(授权文件)
keyDir:存放所有客户端用户的公钥

打开conf/gitolite.conf 配置如下:

@webgroup       =   zhangsan lisi
@androidgroup           =   lisi
@iosgroup       =   wangwu

<!-- 设置管理员的地方 -->
repo gitolite-admin
    RW+     =   lisi

<!-- 可以用来学习使用 -->
repo testing
    RW+     =   @all
    
repo web
    RW+     =   @webgroup
    R       =   fengshuang
    
repo android
    RW+     =   @androidgroup
    
repo ios
    RW+     =   @iosgroup

表示新建三个分组:@webgroup、@androidgroup、@iosgroup,新建三个仓库:web、android、ios,RW分别代表读写,可以通过人所属组给人赋权,也可以直接给人赋权,组前记得加@
将以上配置人间中的人的公钥复制到keyDir文件夹
然后回到仓库根目录gitolite-admin下,使用以下命令提交修改:

git add .
git commit -m "add users and repos"
git push

【注意】:开发人员可以git clone仓库的前提是在这个配置文件中进行了授权提交,并且其公钥已经交由管理员提交到keyDir目录中。
简单的权限管理及这么多,基本上够项目使用,更加负责的权限配置,请参阅官方文档。http://gitolite.com/gitolite/

开发人员下载仓库

这里以张三下载web仓库为例

git clone git@host:web.git  <!-- 别忘了后面的.git -->

转载于:https://www.cnblogs.com/subo_peng/p/8465463.html

相关文章:

  • 项目去掉svn管理标志
  • SSM-MyBatis-09:Mybatis中SqlSession的close为什么能造成事务的回滚
  • Javascript理解this对象
  • GNUPG
  • 零基础Python爬虫实现(百度贴吧)
  • 我对CopyOnWrite的思考
  • RabbitMQ入门-路由-有选择的接受消息
  • 报告称国产智能手机全球市场份额33.1% 超过韩国
  • iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge
  • 深入理解java虚拟机 精华总结(面试)
  • Spring框架
  • DTS-071007 表结构在源库和目标库中不一致
  • 算法学习之路|聪明的打字员
  • [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第二章~第七章
  • MongoDB入门(二)——MongoDB下载与安装
  • ES6指北【2】—— 箭头函数
  • [iOS]Core Data浅析一 -- 启用Core Data
  • “大数据应用场景”之隔壁老王(连载四)
  • Android框架之Volley
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Unix命令
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue-cli在webpack的配置文件探究
  • 大数据与云计算学习:数据分析(二)
  • 大主子表关联的性能优化方法
  • 工作中总结前端开发流程--vue项目
  • 构造函数(constructor)与原型链(prototype)关系
  • 十年未变!安全,谁之责?(下)
  • 使用 QuickBI 搭建酷炫可视化分析
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • const的用法,特别是用在函数前面与后面的区别
  • ​Java并发新构件之Exchanger
  • #在 README.md 中生成项目目录结构
  • (39)STM32——FLASH闪存
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Matlab)使用竞争神经网络实现数据聚类
  • (WSI分类)WSI分类文献小综述 2024
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (论文阅读11/100)Fast R-CNN
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (区间dp) (经典例题) 石子合并
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .“空心村”成因分析及解决对策122344
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net 4.0发布后不能正常显示图片问题
  • .NET 5种线程安全集合
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net 中viewstate的原理和使用
  • .NET关于 跳过SSL中遇到的问题
  • .net流程开发平台的一些难点(1)
  • .NET中GET与SET的用法
  • .Net中间语言BeforeFieldInit
  • @Responsebody与@RequestBody