背景
随着项目组人数增加,打算将版本控制工具从SVN迁移至独立GIT服务器。
基础需求:团队管理,权限控制,分支创建,issue跟踪,代码合并。
额外需求:服务不依赖root权限
考虑到GitLab部署较为复杂,内存开销高,选用相对熟悉的Gogs进行搭建。
搭建
下载
得益于Gogs官方丰富的文档,使用独立二进制发行版进行部署并不复杂。
下载地址: https://dl.gogs.io
服务器环境Ubuntu 18.04 LTS对应下载版本为Gogs_0.12.3_linux_amd64
由于内网服务器并未开放root权限,有部分操作与官方教程存在差异。
配置
初次使用执行./gogs web
后访问<server_ip>:3000进行配置
数据类型SQLite3路径默认,仓库默认保存在家目录
由于缺少root权限,无法给gogs创建独立git用户,将运行系统用户改为当前登录用户
SSH与HTTP地址根据内网ip进行对应修改,底部服务器和其他服务设置中勾选:
☑️启用离线模式
☑️禁用Gravatar服务
☑️禁止用户自主注册
☑️启用登陆访问限制
运行
为避免ssh断开后gogs服务终止,使用nohup命令维持后台运行。
#!/bin/sh
cd ~
nohup ~/gogs/gogs web > /dev/null 2>&1 &
该命令将不产生nohup.out日志文件,确认配置无误后执行。
使用
搭建完成后通知项目成员登录Gogs配置SSH Key并修改密码。
权限管理
默认仓库master分支将设推送保护,仅接受管理员提交或来自其他分支的merge请求。
团队人数不多时可以私人建仓,通过添加协作者的方式协同开发。
团队人数较多时可以创建组织,分配读写权限将应用于组织的所有仓库。
对于已有仓库也可由仓主或管理员将仓库所有权转移给组织。
分支创建
Gogs网页前端不含分支创建功能,因此需要在本地手动创建后同步至远程仓库。
开发者创建分支不受限制,日常开发使用git checkout -b <branch_name>
建立并转到开发分支。
完成开发后使用git push origin <branch_name>
提交修改。
分支删除
删除远程分支主要有两种办法:
- 开发人员提交pull request管理员同意合入后删除;
- 本地使用
git push origin --delete <branch_name>
删除远程分支。
合并请求
新功能开发终了,准备上线。访问仓库页面【合并请求】标签,
左侧选择master右侧选dev,填写原因并指定code-reviewer即可完成创建。