【插圖】GIT 權限管理
2022年9月7日

最近,自行搭建 Git 服務器,再配合Python監控通知,挺好玩又方便!

搭建時,同事期望 set 分支權限 (Branch Permission);期望公共 master 只能讓成員 Pull, 不可 Push;而成員只能 Push 到自己的分支去。不過,我在網上研究了一段時間,只找到一句:“Git does not have branch specific permissions.”。

所以,我改變方向,在 Linux 下,為他們開設專屬的帳戶,並在其帳戶下設置相同的 Git Repository。這樣,就能限制成員只能 Pull 公共和別人的分支,而不能 Push 到公共和別人的分支去 (插圖一)。

【插圖一】從成員角度出發,管理自己的 Git Repository

同時,假設其中一位是管理員,便要負責合井其他成員的分支,並 Push 到自己遠程的 master 去 (插圖二);讓其他成員可以 Pull。換角度來說,管理員的遠程 Repository 會被視為最新/最終版本。

【插圖二】管理成員 Git Repositories

最後,再用 Python 寫了一個簡單的 Watchdog 程式 (插圖三);當有成員 Push 到自己遠程的分支去,就馬上電郵通知管理員;同樣,如果管理員推出最新版本時,也會通知所有成員。

【插圖三】Python Watchdog 監控通知代碼

以上的方法,看似複雜,但其實非常簡單,稍為理解 Git 的原理和 Linux 的運作,就能明白。