zoukankan      html  css  js  c++  java
  • Gitolite 部署GiT 仓库

    简介

        gitolite 提供了便于部署git远程仓库的工具,它本身并不提供服务,服务仍旧依托 ssh 对外提供。

        gitolite 增强了授权体系,和仓库管理功能。

        在本地clone一个gitolite-admin的仓库,直接在本地修改,再推送到远程服务器上即可生效。

        gitolite适合小团队管理.

    gitolite部署

    准备工作

    创建用户

    useradd git-admin
    [root@node4 ~]# id git-admin 
    uid=1000(git-admin) gid=1000(git-admin) groups=1000(git-admin)
    [root@node4 ~]# passwd git-admin 

    生成秘钥

    su git-admin 
    cd
    ssh-keygen -t rsa

    修改秘钥名称

    mv .ssh/id_rsa.pub .ssh/admin.pub
    chmod  700 .ssh/admin.pub

    部署

    克隆 gitolite 版本库

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

    安装 gitolite

    [git-admin@node4 ~]$ mkdir gitolite-admin
    [git-admin@node4 ~]$ gitolite/install -to gitolite-admin
    [git-admin@node4 ~]$ cd gitolite-admin
    [git-admin@node4 gitolite-admin]$ ls
    commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF

    初始化仓库

        使用 admin.pub 管理员秘钥初始化仓库.本机就有了大管理员权限.

        同时会在家目录下创建 repositories 文件夹,这个文件夹就是存储所有的 git 仓库的

       默认有两个 :可.gitolite-admin.git 和test.git, 一个是管理仓库的,一个是测试用 .

    [git-admin@node4 gitolite-admin]$ ./gitolite setup -pk ~/.ssh/admin.pub
    Initialized empty Git repository in /home/git-admin/repositories/gitolite-admin.git/
    Initialized empty Git repository in /home/git-admin/repositories/testing.git/
    WARNING: /home/git-admin/.ssh/authorized_keys missing; creating a new one
        (this is normal on a brand new install)

    查看仓库

    [git-admin@node4 ~]$ cd repositories/
    [git-admin@node4 repositories]$ ls
    gitolite-admin.git testing.git

    生成管理员仓库

        就是把管理员仓库的代码同步到一个位置,以后权限控制,创建仓库,添加用户都在这个地方操作就可以了.

    [git-admin@node4 ~]$ mkdir data
    [git-admin@node4 ~]$ cd data/
    [git-admin@node4 data]$ git clone git-admin@127.0.0.1:gitolite-admin
    Cloning into 'gitolite-admin'...
    remote: Enumerating objects: 6, done.
    remote: Counting objects: 100% (6/6), done.
    remote: Compressing objects: 100% (4/4), done.
    remote: Total 6 (delta 0), reused 0 (delta 0)
    Receiving objects: 100% (6/6), done.
    [git-admin@node4 data]$ tree 
    .
    └── gitolite-admin         
        ├── conf                        配置公户权限/仓库的配置
        │   └── gitolite.conf
        └── keydir                     下面是放对应用户ssh公钥,admin.pub这个公钥可以删除了(创建格式为 用户名可自定义.pub 用户名权限控制有用到,里面复制该用户的 ssh.pub <id_rsa.pub>)       
            └── admin.pub

    gitolite配置文件说明

    在 keydir 下把开发人员的 sshkey 都添加进去一个人一个文件.

    配置仓库

    cat conf/gitolite.conf 
    # groups              # 用户组
    @admin = admin        # 多个用户用空格隔开,此用户名就是keydir 用户名.pub文件的名字
    @user = root
    
    # access
    repo gitolite-admin      # 仓库名 可以自定义多个仓库
        RW+     =   admin    # RW+ 权限为: 读 写 删除
    
    # 自定义的仓库,如果没有仓库则会自动创建仓库
    # 如果要新增加仓库按照这个格式在添加就可以了
    repo project
        RW+     =   @admin    # 也可以写 @all 所有人
        Rw      =   @user    # Rw  权限为: 度 写 

    提交代码

        提交代码之后 gitolite 会自动创建仓库.

    [git-admin@node4 gitolite-admin]$   git config --global user.email "you@example.com"
    [git-admin@node4 gitolite-admin]$   git config --global user.name "Your Name"
    [git-admin@node4 gitolite-admin]$ git commit -m 'new user test'
    [master aeef50c] new user test
     2 files changed, 12 insertions(+), 2 deletions(-)
     create mode 100644 keydir/test.pub
    [git-admin@node4 gitolite-admin]$ git push origin master 
    Enumerating objects: 10, done.
    Counting objects: 100% (10/10), done.
    Compressing objects: 100% (5/5), done.
    Writing objects: 100% (6/6), 1.12 KiB | 1.12 MiB/s, done.
    Total 6 (delta 0), reused 0 (delta 0)
    remote: WARNING: syntax error, ignoring: 'Rw = @user'
    remote: Initialized empty Git repository in /home/git-admin/repositories/project.git/          # 自动创建仓库
    To 127.0.0.1:gitolite-admin
       2e5aae9..aeef50c  master -> master

    客户端测试

    [root@node3 ~]# git clone git-admin@172.16.0.64:devops.git
    Cloning into 'devops'...
    warning: You appear to have cloned an empty repository.
    [root@node3 ~]# cd devops/
    [root@node3 devops]# ls
    [root@node3 devops]# touch tt{1..100}.txt
    [root@node3 devops]# git add .
    [root@node3 devops]# git commit -m 'add 100 txt'
    [root@node3 devops]# git push origin master 
    Enumerating objects: 3, done.
    Counting objects: 100% (3/3), done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 448 bytes | 448.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To 172.16.0.64:devops.git
     * [new branch]      master -> master
    

      

  • 相关阅读:
    kubernetes入门(03)kubernetes的基本概念
    洛谷P3245 [HNOI2016]大数(莫队)
    洛谷P4462 [CQOI2018]异或序列(莫队)
    cf997C. Sky Full of Stars(组合数 容斥)
    cf1121F. Compress String(后缀自动机)
    洛谷P4704 太极剑(乱搞)
    洛谷P4926 [1007]倍杀测量者(差分约束)
    洛谷P4590 [TJOI2018]游园会(状压dp LCS)
    洛谷P4588 [TJOI2018]数学计算(线段树)
    洛谷P4592 [TJOI2018]异或(可持久化01Trie)
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/13378751.html
Copyright © 2011-2022 走看看