背景
隨着項目組人數增加,打算將版本控制工具從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即可完成創建。