求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
使用gitosis的来配置管理的git服务器端
 

作者:Elton,发布于2012-2-7

 

1. 安装git

emerge -av dev-util/git

2.安装gitosis

git环境默认是可以直接使用的,但需要为每个成员开ssh权限帐号,且各个仓库之间的交叉权限管理很麻烦,所以需要使用gitosis, 它无需为每个开发人员开设ssh帐号,安全方便。

emerge -av gitosis

如果提示这个包被mask了,需要编辑/etc/portage/package.keywords文件,在里面加入

dev-util/gitosis ~amd64

3.生成公钥

在客户端使用

ssh-keygen -t rsa

来生成ssh的key,注意你的主机名需要是全部英文字符,不能有下划线或者.之类的特殊字符,否则后面在服务端生成版本库的时候会报错。

4.上传公钥

从客户端把刚刚生成的公钥上传到服务器上。

scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp

5.在服务端生成管理库

sudo -H -u git gitosis-init < /tmp/id_rsa.pub

成功的话,你将看到类似下面的提示:

Initialized empty Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/

Reinitialized existing Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/

设置post-update脚本权限

chmod 755 /var/spool/gitosis/repositories/gitosis-admin.git/hooks/post-update

至此,服务端配置已经完成。

6.同步配置文件

gitosis本身就是一个git库,所以管理起来非常方便。下面在客户端同步gitosis管理库

git clone git@YOUR_SERVER:gitosis-admin.git

cd gitosis-admin

你将看到以下文件

-rw-r--r-- 1 garry garry 104 Nov 13 05:43 gitosis.conf

drwxr-xr-x 3 garry garry 102 Nov 13 05:43 keydir/

gitosis.conf是gitosis的配置文件,用于配置用户和权限

keydir/是所有组成员的公钥

我们可以在本地修改配置更改权限,然后push到服务端后,服务器端就立刻生效

7.创建新的repositories

打开gitosis.conf文件,你将看到

[group gitosis-admin]

writable = gitosis-admin

members = elton@macbook

这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。

在这个文件后面加入:

[group myteam]

members = elton@macbook

writable = free_monkey

这里你定义了一个叫myteam的组,授予elton@macbook这个用户写“free_monkey”这个repo的权限

git commit -a -m "Allow elton write access to free_monkey"

git push

上面的操作就更新了服务端的权限。

下面就开始创建free_monkey的repo

mkdir free_monkey

cd free_monkey

git init

创建 .gitignore 文件,用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下:

.DS_Store

log/*.log

tmp/**/*

config/database.yml

db/*.sqlite3

提交代码:

git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git

git add .

git commit -a -m "initial import"

git push origin master:refs/heads/master

接下来,可以增加成员的公钥到系统中了

cd gitosis-admin

cp ~/alice.pub keydir/

cp ~/bob.pub keydir/

git add keydir/alice.pub keydir/bob.pub

修改gitosis.conf

[group myteam]

- members = jdoe

+ members = jdoe alice bob

writable = free_monkey

提交修改:

git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey"

git push

其它成员就可以获取代码了

git clone git@YOUR_SERVER:free_monkey.git


相关文章

每日构建解决方案
如何制定有效的配置管理流程
配置管理主要活动及实现方法
构建管理入门
相关文档

配置管理流程
配置管理白皮书
CM09_C配置管理标准
使用SVN进行版本控制
相关课程

配置管理实践
配置管理方法、工具与应用
多层次集成配置管理
产品发布管理


软件配置管理的问题、目的
软件配置管理规范
CQWeb 7.1性能测试与调优指南
为什么需要使用ClearCase
ClearCase与RTC的集成
利用ClearQuest 进行测试管理
更多...   


产品发布管理
配置管理方法、实践、工具
多层次集成配置管理
使用CC与CQ进行项目实践
CVS与配置管理
Subversion管理员


配置管理实践(从组织级到项目级)
通号院 配置管理规范与应用
配置管理日构建及持续集成
丹佛斯 ClearCase与配置管理
中国移动 软件配置管理
中国银行 软件配置管理
天津华翼蓝天科技 配置管理与Pvcs