開一個臨時的 git 倉儲

想跟隔壁交換 code 但依然不想要推去 Github

跟前一篇 極簡易的 git server 類似狀況但更複雜、要跟旁邊的人協作但無聊如我依然就是不想把 code 推到 Github,查了查有沒有什麼方案。

最快的手段依然會是前一篇走 http.server 的方法,但這個模組不接受 POST,要採用這個方法的話就是換成由另一方開伺服器,但由於每次有更新都要重跑 git-update-server-info 算是小麻煩。

另一個方案就是在本地端起一隻 Git 倉儲服務,因此查看了一下有什麼解決方案。注意這裡的目的是起一個臨時的服務、故會以方便性作考慮而非安全性。

GitLab

說道開源的 git 倉儲肯定會要聊到 GitLab——不過我就直接跳過它了,我只是想要個臨時而簡單的小工具。

Gogs / Gitea

Gitea 算是以前就聽過的方案,另外這次查了才發現它是 Gogs 的 fork。由於 Gitea 的文件比 Gogs 完整非常多,因此就以 Gitea 來嘗試。

首先取得它的映像檔 gitea/gitea

docker pull gitea/gitea:latest-rootless

然後直接跑起來:

docker run -d --rm -p 3000:3000 -p 2222:2222 --name gitea gitea/gitea:latest-rootless

其中有幾個參數可以調:2222 阜是給 SSH 使用的,如果沒用到可以不用開,另外就是如果想要保存 repo 跟設定可以把本機的某個資料夾 mount 進去 /data

跑起來之後從瀏覽器登入 http://localhost:3000 會看到一個設定的頁面,好久沒遇到用 UI 做初始化的系統了,前一次摸到疑似是當年的 phpBB

資料庫可以先用 SQLite 就好,反正不可能有那麼大量的同步讀寫需求。戳完安裝就...

厄,還沒好

接下來會要求使用者登入或註冊帳號,為了偷懶所以直接用命令列敲一個使用者起來:

docker exec gitea gitea admin user create --username root --email user@example.com --random-password

這裡會做基本的安全性檢查,某些使用者名稱不給用、密碼長度也會限制。然後不管是指定密碼或是隨機密碼,在初次登入的時候依然會要求使用者改密碼。

改完密碼之後就能用了,不過小煩。

GitBucket

GitBucket是另一個選項,而且簡單不少。

首先一樣取得映像檔 gitbucket/gitbucket

docker pull gitbucket/gitbucket

然後跑起來:

docker run --rm -d -p 8080:8080 gitbucket/gitbucket

嗒噠,好了!

直接開 http://localhost:8080/ 下去、使用預設帳號密碼 root / root就能用了:

有夠方便的拉,但如果是需要放到公開網路的東西的話就... 還是先好好讀過他們的文件吧。