前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用gitosis来配置管理git服务器端

使用gitosis来配置管理git服务器端

作者头像
EltonZheng
发布2021-01-22 07:41:47
9030
发布2021-01-22 07:41:47
举报

1. 安装git

代码语言:javascript
复制
emerge -av dev-util/git

2.安装gitosis

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

代码语言:javascript
复制
emerge -av gitosis

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

代码语言:javascript
复制
dev-util/gitosis ~amd64

3.生成公钥

在客户端使用

代码语言:javascript
复制
ssh-keygen -t rsa

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

4.上传公钥

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

代码语言:javascript
复制
scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp

5.在服务端生成管理库

代码语言:javascript
复制
sudo -H -u git gitosis-init < /tmp/id_rsa.pub

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

代码语言:javascript
复制
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脚本权限

代码语言:javascript
复制
chmod 755 /var/spool/gitosis/repositories/gitosis-admin.git/hooks/post-update

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

6.同步配置文件

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

代码语言:javascript
复制
git clone git@YOUR_SERVER:gitosis-admin.git
cd gitosis-admin

你将看到以下文件

代码语言:javascript
复制
-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文件,你将看到

代码语言:javascript
复制
[group gitosis-admin]
writable = gitosis-admin
members = elton@macbook

这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。 在这个文件后面加入:

代码语言:javascript
复制
[group myteam]
members = elton@macbook
writable = free_monkey

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

代码语言:javascript
复制
git commit -a -m "Allow elton write access to free_monkey"
git push

上面的操作就更新了服务端的权限。 下面就开始创建free_monkey的repo

代码语言:javascript
复制
mkdir free_monkey
cd free_monkey
git init

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

代码语言:javascript
复制
.DS_Store
log/*.log
tmp/**/*
config/database.yml
db/*.sqlite3

提交代码:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
cd gitosis-admin
cp ~/alice.pub keydir/
cp ~/bob.pub keydir/
git add keydir/alice.pub keydir/bob.pub

修改gitosis.conf

代码语言:javascript
复制
[group myteam]
- members = jdoe
+ members = jdoe alice bob
  writable = free_monkey

提交修改:

代码语言:javascript
复制
git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey"
git push

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

代码语言:javascript
复制
git clone git@YOUR_SERVER:free_monkey.git

参考: Hosting Git repositories, The Easy (and Secure) Way


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装git
  • 2.安装gitosis
  • 3.生成公钥
  • 4.上传公钥
  • 5.在服务端生成管理库
  • 6.同步配置文件
  • 7.创建新的repositories
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档