git服务器搭建

git 服务器搭建

1.Gitolite 简介

  • Gitolite 是对 Git 使用的一个封装

  • Giolite 服务器其实是使用perl脚本对通过 Git 命令进行权限检查

  • Gitolite 服务器的管理是通过一个名字叫做 gitolite-admin 的 Git 仓库进行管理的

2.Gitolite 的安装

​ 这里使用的是 ubuntu22.04 平台,其它 ubuntu 版本也是类似的。

  • 2.1 首先新建一个 git 的用户账户,并给与 root 权限

  1. 配置 git 的管理账号

    sudo adduser git
    
  2. 分配管理员权限给 git 账号

    sudo usermod -a -G sudo git
    
  3. 后续操作切换到 git 账号

    sudo su git
    
  • 2.2 安装 git 和 ssh-server

    sudo apt-get install git openssh-server openssh-client
    
  • 2.3 生成管理员公钥

    在管理员电脑上执行keygen指令,并将生成的 id_rsa.pub 发送到用户git的目录下.(也可以直接在 git 用户下执行 keygen 指令,则此时 git 用户拥有仓库的管理权限)

    ssh-keygen -t rsa
    
  • 2.4 下载 gitolite 源码

    git clone https://github.com/sitaramc/gitolite
    
  • 2.5 在 git 用户上进行安装,安装目录为 /home/git/bin

    mkdir bin
    gitolite/install -to /home/git/bin
    
  • 2.6 设置 gitolite 管理员

    此处的id_rsa.pub即为前面生成的管理员公钥

    bin/gitolite setup -pk id_rsa.pub
    

    执行完上面指令后,程序会在/home/git/repositories下生成两个默认的仓库 gitolite-admin.gittesting.git,其中gitolite-admin.git即为管理员仓库.

  • 2.7 gitolite管理员下载管理仓库

    git clone git@< 服务器IP >:gitolite-admin.git
    

3.Gitolite服务器管理

​ 服务器管理通过编辑 gitolite-admin/conf 目录下 **gitolite.conf **文件来实现服务器上仓库的增减以及用户权限管理. gitolite-admin/keydir 用于存放用户公钥. 管理员通过 ‘git push’ 修改至远端仓库使修改生效.

gitolite.conf 初始内容:

repo gitolite-admin
    RW+     =   id_rsa

repo testing
    RW+     =   @all

​ 即目前服务器共有两个仓库, gitolite-admin 以及 testing, 其中公钥 id_rsa 的用户具有对仓库 gitolite-admin 的读写权限, 其余所有在 gitolite-admin/keydir 下有公钥的用户对 testing 仓库有读写权限

  • 3.1 公钥管理

​ 项目成员 ‘zhao’, ‘qian’ ,‘sun’ 通过在本机 git 下执行 “ssh-keygen -t rsa” 指令生成公钥,重命名为 zhao.pub, qian.pub, sun.pub,然后发送给管理员. 管理员将这三组公钥复制到 gitolite-admin/keydir 目录下并且提交到远程仓库. 则此时 ‘zhao’, ‘qian’ ,‘sun’ 默认在 group all下面, 即有了对 testing 的读写权限,可执行如下代码 clone testing 仓库到本地.

git clone git@<服务器ip>:testing.git
  • 3.2 配置文件详细的语法规则

    3.2.1 基本语法

    (1)注释,以“#”作为注释的开发
    (2)没有续行符“\”
    (3)所有的东西都是用空格作为分隔符(不用逗号,分号等)
    (4)用户名和代码库名可以包含’.’ ‘_’ '-'等,代码库可以包含"/",用户名可以有“@”
    (5)组名必须以@开始

    3.2.2 权限管理

    (1)R, 只读

    (2)RW, 允许 push 一个分支 branch, 或者创建一个 branch/tag

    (3)RW+, 可以快速推送, 倒回或者删除 branches or tags

    3.2.3 组的定义

    用户组和代码库组定义是一样的两者没差别。

    • 简单定义了一个组

      @developers     =   zhao qian sun
      
    • 组的值是累积的所以也可以按下面这么定义,和上面的一样

      @developers     =   zhao
      @developers     =   qian
      @developers     =   sun
      
    • 组的定义可以嵌套,但值是立即展开的,也就是说后面定义的值,不会在加的嵌套的组里面

      @developers     =   zhao qian
      @interns        =   sun
      @staff          =   @interns @developers
      @developers     =   li# li 用户并不属于 @staff 组
      
    • 正常使用的一个例子, developers 组对 1806_SDK 具有读写权限 readonly 组对 1806_SDK 具有只读权限

      @developers     =   zhao qian sun 
      @readonly		= li zhou
      repo 1806_SDK
      RW+ =   @developers
      R   =   @readonly
      
  • 3.3 新建/删除仓库

    通过对 gitolite.conf 修改删除了**“testing”** 仓库并且新建了两个仓库,“1806_SDK” 以及 “hostapd”, 默认所有用户均对这两个仓库有读写权限

    repo gitolite-admin
        RW+     =   id_rsa
    
    repo 1806_SDK
        RW+     =   @all
    
    repo hostapd
        RW+     =   @all
    

    参考文档:

    Gitolite服务器搭建及使用教程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值