使用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



有关Git的好的学习资料有么 tst001
svn服务器端界面打不开 hzh580912
配置管理之六个层次 是指什么 俎涛
svn 支持自动化脚本么 蛊惑仔
svn对于大型项目和分布式开发的企业合适么 快乐的周末
如何建立起公司级的配置管理体系? fireoci
更多问题 ...


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


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

相关咨询服务
SCM启动咨询
SCM流程规范咨询
SCM评估性咨询


丹佛斯 ClearCase与配置管理
某电子支付平台 产品发布管理
捷德 基于CC与CQ的UCM
中国移动 软件配置管理
EMC研发中心 ClearCase
曙光公司 软件配置管理
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号