Contents
  1. 1. Gitlab

这两天测试了几个git服务端的安装,踩了一下坑,开贴记录一下
一开始使用了gitosis和gitolite,这两个很轻量,gitosis已经不更新了,gitolite还在更新,所以如果这两个选择的话还是gitolite吧,而且gitolite能把权限细分到branch。
其实这两个本质上说都是对服务端authorized_keys文件的管理,客户端必须生成rsa key对,把public key提交到keydir然后gitolite负责把key导入到authorized_keys,这样客户端就能通过ssh协议访问git服务器。
这两个都没web界面,还要配合gitweb,但是gitweb功能简单而且丑。
最大的缺陷是这两个东西貌似对提交者管理不太严谨,提交者是谁大可以通过命令在客户端修改

1
git config --global user.name '你猜我是谁'

最后没有完整的安装测试,因为gitweb实在是太丑。。。

Gitlab

GitLab就复杂很多了,可以看作GitHub的开源版,其中GitLab-CE是社区版可以免费用,我装的就这个。
我是用源码安装的,感觉用源码安装可以更加深入学习一下
全程跟着官网教程:
GitLab-CE 安装教程

特别要说
Ruby 版本一定要跟着教程使用2.3.3的,2.4在后面bundle构建环境时候会报json的错
Redis教程里面使用了unix socket,需要改一下配置文件
node和yarn可以使用淘宝的 淘宝 NPM 镜像
node用源码,yarn可以用cnpm

cnpm install yarn -g

这样就安装好gitlab了,可以新建一个project测试

克隆repo使用的命令格式是这样:

1
git clone git@your.git.server:your/repo.git

这里git@your.git.server是指你使用git服务器的git user登录,因为你的public key已经导入authorized_keys了,所以这里应该不需要密码,如果提示输入密码那肯定是有问题了。
可以使用ssh命令测试一下:

1
2
$ ssh -T git@your.git.server
Welcome to GitLab, USER!

正确的话会显示登录信息。

另外如果使用了多个rsa密钥对,需要在.ssh/config做一下配置

1
2
3
4
Host your.git.server
HostName your.git.server
User git
IdentityFile /path/of/your/private/key

还有个简单的安装方法,这里选择操作系统版本,例如ubuntu,之后安装比较简单
安装 GitLab CE

GitLab的project界面,比较清新

权限管理界面member
要获得repo的push权限,需要把member添加进来才行
如果要push到master就给master权限,否则只给devlop权限就可以push到分支

Contents
  1. 1. Gitlab