一直用Gitblit,最近要迁移到Gitlab上,记录一下安装和迁移的过程。
1. Gitlab安装
在CentOS上安装完全按照Gitlab的官网安装步骤 基本没有问题,最后一步
sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee
可以先不用考虑EXTERNAL_URL,这个后面通过修改/etc/gitlab/gitlab.rb来设置。
2. Gitlab配置
80被占用了,这里先改成8888端口,修改/etc/gitlab/gitlab.rb来设置
external_url 'http://外网ip:8888'
修改完需要重启配置(这个重启要很久)
gitlab-ctl reconfigure
重启服务
gitlab-ctl restart
3. Gitlab管理
我需要实现的目标是
-
因为是内部团队使用,所以取消注册功能
image.png -
新用户缺省不允许创建Project
image.png -
API创建用户,
可能需要创建的用户比较多,同时需要取消邮件确认和创建group权限。可以考虑通过API来创建,命令如下:
//如果在win10的powershell下运行,需要先运行这句
Remove-item alias:curl
curl --header "PRIVATE-TOKEN: XtgossbudeEerKMbhy" --data "password=badfe@12312&email=xxx@qq.com&username=cengh&name=%E7%8E%8B%E8%80%81%E4%BA%8C&can_create_group=false&skip_confirmation=true" "http://外网ip:8888/api/v4/users"
-
PRIVATE-TOKEN参数是指有权限创建用户的管理员账号的一个token,在自己的账号setting上能创建和获取到。
image.png - password最好复杂一下,不能太简单。否则会有错误
-
name如果是中文,需要转码,否则也有错误
image.png - can_create_group=false:表示禁止创建组
- skip_confirmation=true:表示跳过邮件确认
更多参数可以参考Gitlab的API文档
4. 导出旧项目然后导入到Gitlab
如果只把源码导出再导入,那么所有分支包括分支的所有历史记录都没有了。可以通过以下命令来实现把项目respository完全镜像clone下来,包括所有分支和记录。
git clone --bare git://github.com/username/project.git
下载下来的目录不是源代码,而是类似以下的目录结构:
image.png
最后在gitlbab上先创建一个新的respository,然后命令行进入到以上的目录下,执行git push命令把旧的镜像推送到新的gitlab上的respository里。
cd project.git
git push --mirror git@你的gitlab的ip/newproject.git
网友评论