本文介绍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

git远程仓库创建及权限管理(二)多个项目的更多相关文章

  1. git远程仓库创建及权限管理(一)单个项目

    最近接手公司git权限管理,既然负责此事个人觉得应该深入学习下,不仅为当前工作也为进一步发展.网上查找了一番,找到了完整的教程,所以这里不再一步一步描述,具体链接已给出,本文只对操作过程中遇到的问题的 ...

  2. git远程仓库创建及代码提交

    git仓库创建:1. mkdir project-repertory2. cd project-repertory3. git init --bare 此时,git仓库已成功创建. 本地要提交的代码在 ...

  3. 如何快速关联/修改Git远程仓库地址

    如何快速关联/修改Git远程仓库地址?按照如下步骤即可快速实现关联/修改Git远程仓库地址: 删除本地仓库当前关联的无效远程地址,再为本地仓库添加新的远程仓库地址 git remote -v //查看 ...

  4. Git 远程仓库的管理和使用

    要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库 ...

  5. git 远程仓库 轻松创建

    很多时候,为了方面管理我们写的代码,我们采用git 远程仓库来进行管理和备份.防止代码被他人篡改或删除.那如何来进行创建远程仓库呢? 1.我们必须有一个远程服务器端,在这里可以把任意一台电脑作为服务器 ...

  6. Git 远程仓库默认权限问题的解决

    多人共同开发维护一个项目时,对整个项目文件互有拉取.推送等行为.为防止操作时文件权限出现冲突,可有以下2种方法解决: 1. 本地git的远端设置中,连接远程仓库时多人使用同一个用户名,该用户名为git ...

  7. GIT 远程仓库:添加远程库、从远程库克隆

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...

  8. Git -- 远程仓库简介

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...

  9. 10.Git远程仓库

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了.可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git ...

随机推荐

  1. kimbits_USACO

    StringsobitsKim Schrijvers Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits ...

  2. in_device结构和in_ifaddr结构

    /* ip配置块 */ struct in_device { /* 二层设备 */ struct net_device *dev; /* 引用计数 */ atomic_t refcnt; /* 是否正 ...

  3. 64_c2

    coin-or-Bcp-1.4.3-3.fc26.i686.rpm 22-May-2017 21:07 250866 coin-or-Bcp-1.4.3-3.fc26.x86_64.rpm 22-Ma ...

  4. Filecoin:一种去中心化的存储网络(一)

    开始初步了解学习Filecoin,如下是看白皮书的内容整理. 参考: 白皮书中文版 http://chainx.org/paper/index/index/id/13.html 白皮书英文版 http ...

  5. js对页面对float类型的数据格式化处理

    <script>        document.write(parseFloat(<s:property value="assureterm"/>)); ...

  6. C语言inline函数(转)

    原文链接:http://blog.csdn.net/yuan1125/article/details/6225993 1  inline只是个编译器建议,编译器不一定非得展开Inline函数. 例如: ...

  7. 在写一次epoll

    epoll & select & poll只能处理IO相关的操作,epoll每一个操作必须注册到时间监控机制中,并且还需要进程或者线程进行管理. 多进程/多线程 和epoll相比较 e ...

  8. 0,null,undefined,[],{},'',false之间的关系

    0与一些虚值的比较: 0与false 0==false true 0与'': =='' true 0与[]: ==[] true 0与NaN: 0==NaN false 0与undefined 0== ...

  9. Trapping Rain Water——经典的双边扫描问题

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...

  10. WordPress 一键置顶文章(推荐用SM Sticky Clicky Star)

    在 WordPress入门 之 发布新文章和管理文章 中,倡萌已经简单提到可以在文章编辑界面或者快速编辑界面设置置顶文章,但是如果你想在后台文章列表中添加一键置顶文章的功能,不妨试试 Quick St ...