zoukankan      html  css  js  c++  java
  • git远程仓库创建及权限管理(二)多个项目

    本文介绍ubutu下使用gitolite实现多项目的权限管理
    1、安装git
      sudo apt-get install git

    2、设置Git的user name和email:

       git config --global user.name "git_name"
       git config --global user.email "email"

    3、生成公钥

      ssh-keygen -t rsa -C "email"

      如果不设置密码直接3个回车即可,生成的公钥(id_rsa.pub)会在主目录的.ssh文件下面。

      拷贝id_rsa.pub到tmp目录下,后面会用到

      cp ~/.ssh/id_rsa.pub yourname.pub

    4、添加一个git用户

      sudo adduser git

    5、安装gitolite

      切换到git用户

      su git

      进入git主目录

      cd /home/git

      创建bin目录

      mkdir bin

      下载gitolite

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

      安装gitolite

      gitolite/install -ln ~/bin # please use absolute path here

      gitolite setup -pk /tmp/yourname.pub

    6、克隆gitolite-admin 

      git clone git@127.0.0.1:/home/git/repositories/gitolite-admin #我是再本地模拟配置的,所以ip为本地

    到此工作完成。

    7、管理

    Gitolite 会创建一个特殊仓库 gitolite-admin ,用于管理用户权限及仓库信息。

    git clone git@host_git_repo:gitolite-admin

    1、 添加用户
    以添加位于主机 host-dev-1 的用户 dev_user_1 为例:

    clone Gitolite 管理配置目录 gitolite-admin 到本地

    将用户 dev_user_1 的 SSH 公钥保存到 gitolite-admin/keydir/ ,文件名要遵守 Gitolit 要求的格式:

    * 不能将同一密钥分配给不同用户,虽然在其他情况下是没有任何问题的,但是 gitolite 是通过密钥来区分和检索不同用户的,我理解它的工作原理是,它读取 git 用户下 .ssh/authorized_keys 文件,读入为 Hash 结构,所以刷新该文件时,各条记录是无次序的,但是一个用户连接进来时,Gitolite 读取用户的公钥,并按文件 .ssh/authorized_keys 中公钥出现顺序比对,找到符合的第一个,然后确认就是该文件中公钥对应的用户,然后根据该用户确认权限。也就是说,即使连接的用户是位于主机 host-dev-1 的用户 dev_user_1 ,如果 .ssh/authorized_keys 中有用户 dev_user_2 的公钥与它相同,并且首先出现,那么 Gitolite 认为 dev_user_1 就是 dev_user_2 ,并使用 dev_user_2 的权限,这不是我们需要的
    * 文件需要以 .pub 结尾,否则不能被 Gitolite 导入
    * Gitolite 仍然支持(兼容)旧的命名规范,对于本例是 dev_user_1@host-dev-1.pub ,注意,host-dev-1 是用户所在主机名(或其它标识信息),在 Gitolite 权限配置文件 conf/gitolite.conf 中不应当出现。Gitolite 仍然支持 Email 地址形式的主机名,但必须至少存在一个 "**.**" ,比如 dev_user_1@gmail.com ,Gitolite 以此认定是一个 Email 地址,对于 dev_user_1@gmail-com ,它认为 gmail-com 是一个主机名(或其它标识信息),Email 形式的用户名需要完整地写在 Gitolite 权限配置文件 conf/gitolite.conf 中
    修改权限配置文件 conf/gitolite.conf ,为该用户分配指定的权限,注意,用户名是 dev_user_1 ,而非 dev_user_1@host-dev-1 : repo DEV_REPO

    RW+ = dev_user_1

    提交到本地,然后推送到 gitolite-admin 远程仓库

    2、删除用户
    删除用户也很简单,删除用户的公钥,删除权限配置文件 conf/gitolite.conf 中的用户名

    提交到本地,然后推送到 gitolite-admin 远程仓库

    3、添加/删除仓库
    如果是添加一个新的仓库,那么操作十分简单,直接在权限配置文件 conf/gitolite.conf 中添加该仓库名: repo New_DEV_REPO

    提交到本地,然后推送到 gitolite-admin 远程仓库,Gitolite 会自动创建这个仓库

     gitolite all-in-one page

    在Ubuntu下快速安装gitolite

  • 相关阅读:
    Java多线程
    http网页请求状态码
    C++文件读写
    算法训练 最大的算式
    算法训练 2的次幂表示
    线段树- 算法训练 操作格子
    Prim算法(最小生成树)
    Kruskal算法(最小生成树)
    Dijkstra算法(最短路)
    HDU5692 dfs + 线段树维护区间最大值
  • 原文地址:https://www.cnblogs.com/sunjf/p/git_remote_manager.html
Copyright © 2011-2022 走看看