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
git远程仓库创建及权限管理(二)多个项目的更多相关文章
- git远程仓库创建及权限管理(一)单个项目
最近接手公司git权限管理,既然负责此事个人觉得应该深入学习下,不仅为当前工作也为进一步发展.网上查找了一番,找到了完整的教程,所以这里不再一步一步描述,具体链接已给出,本文只对操作过程中遇到的问题的 ...
- git远程仓库创建及代码提交
git仓库创建:1. mkdir project-repertory2. cd project-repertory3. git init --bare 此时,git仓库已成功创建. 本地要提交的代码在 ...
- 如何快速关联/修改Git远程仓库地址
如何快速关联/修改Git远程仓库地址?按照如下步骤即可快速实现关联/修改Git远程仓库地址: 删除本地仓库当前关联的无效远程地址,再为本地仓库添加新的远程仓库地址 git remote -v //查看 ...
- Git 远程仓库的管理和使用
要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库 ...
- git 远程仓库 轻松创建
很多时候,为了方面管理我们写的代码,我们采用git 远程仓库来进行管理和备份.防止代码被他人篡改或删除.那如何来进行创建远程仓库呢? 1.我们必须有一个远程服务器端,在这里可以把任意一台电脑作为服务器 ...
- Git 远程仓库默认权限问题的解决
多人共同开发维护一个项目时,对整个项目文件互有拉取.推送等行为.为防止操作时文件权限出现冲突,可有以下2种方法解决: 1. 本地git的远端设置中,连接远程仓库时多人使用同一个用户名,该用户名为git ...
- GIT 远程仓库:添加远程库、从远程库克隆
到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...
- Git -- 远程仓库简介
到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...
- 10.Git远程仓库
到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了.可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git ...
随机推荐
- MediaWiki安装配置(Linux)【转】
转自:http://blog.csdn.net/gao36951/article/details/43965527 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 1Media ...
- monkey测试===monkeyrunner测试教程(2)
我先引入一段代码: #test.py from com.android.monkeyrunner import MonkeyRunner as mr device=mr.waitForConnecti ...
- ServerSocket和Socket通信
服务器端: 1.服务器端建立通信ServerSocket对象,并设置端口号 2.服务器建立Socket接收客户端连接 3.建立IO输入流读取客户端发送的数据 4.建立IO输出流向客户端输出数据 客户端 ...
- 【mongo】用户添加、导入数据库、连接VUE
添加用户 1.安装mongo时最好用apt-get install 因为这样可以省去很多麻烦,比如一些环境变量,还有一些文档路径等等的问题 2.确认一下自己的mongodb和mongodb-clie ...
- XAlign—自动对齐代码插件
XAlign An amazing Xcode plugin to align regular code. It can align anything by using custom alignmen ...
- python标准库之【socket】
socket通常也称作”套接字“.网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket 是网络连接端点.例如当你的Web浏览器请求www.fishc. ...
- BestCoder Round #85 前三题题解
sum Accepts: 822 Submissions: 1744 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/13107 ...
- poj2104 划分树 区间K大 在线 无修改
博主sbit....对于高级数据结构深感无力,然后这些东西在OI竟然烂大街了,不搞就整个人都不好了呢. 于是我勇猛的跳进了这个大坑 ——sbit 区间K大的裸题,在线,无修改. 可以用归并树(\(O( ...
- NOIP模拟2017.6.11解题报告
T1: 水题: 代码: #include <cstdio> #include <iostream> #include <algorithm> using names ...
- AC日记——红色的幻想乡 洛谷 P3801
红色的幻想乡 思路: 线段树+容斥原理: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #de ...