

在 Windows 架設 Git 私服 - 免安裝版
source link: https://blog.darkthread.net/blog/shared-folder-as-gi-server/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在 Windows 架設 Git 私服 - 免安裝版
Git 是分散式版控,在任何資料夾下個 git init 指令就能開始管理版本,不管是 Side-Project、小程式,企劃案、設計草稿、專題作業還是碩士論文,Git 就能幫你保留版本回到從前,不用擔心改壞沒法重來。不過,只存在自己電腦風險太高,要是硬碟壞了心血結晶便付之東流,將資料定期推送到伺服器保存才是王道。另外,集體創作或多人專案也一定得靠 Git 伺服器讓團隊成員共享,進行協作開發。
講到 Git 伺服器,Github 自然是當今首選。微軟收購 Github 後送給開發者一份禮物 - 開放三名以下參與者的私有儲存庫 (Private Repository) 免費使用,2020 年 4 月再進一步大放送,取消免費私有儲存庫的協作人數限制。因此,若無其他考量,用 Github 就對了!
對企業用戶而言,受限網路存取政策或禁止內部資料上傳外網,Github 等雲端服務可能不是選項,此時就得考量架設內部 Git 版控伺服器。對 Visual Studio 開發來說,TFS (Team Foundation Server) 除了版控外還提供專案管理、報表、自動建置/測試/部署等功能,絕對是 Git 私服首選。(補充:TFS 自 2019 年起更名為 Azure DevOps Server,不過我每次聽到 Azure DevOps Server 要想一下才能意會,大部分時侯我還是叫它 TFS 比較順口易懂,大家就把它想成某位算命剛改名的朋友,叫新舊名字都通,我猜 TFS 本人不會介意的 XD)
我有個特殊需求,一些不了檯面的零散小工具,為它們在部門 TFS 伺服器開新專案還另外設權限太隆重,全部丟進某個「庶務二課專案」又太龐雜。尤其是小工具性質偏小團隊或個人專用,丟上全部門的版本伺服器說起來怪怪的,這種情境下,自己架台 Git 小私服供團隊成員共用甚至個人自用,似乎是不錯的例子。
講到「Git 私服」,先介紹最簡單的玩法:完全不用裝軟體,直接用 Windows 的共享資料夾功能就行。
其實,先前在作者(Auhtor)與提交者(Commmitter)差異實驗文章我就有示範過類似技巧了。當時要展示兩個開發者對上游做 pull、push 動作,整個過程卻完全沒用到 Github 或 TFS,而是另開一個 upstream 資料夾,用 git init --bare 建了一個 Bare Repository,這個 upstream 資料夾可當成同步來源。Bare Repository 是一種特殊的儲存庫模式,裡面是平常放在 .git 子資料夾下的內容,它無法 git add、git commit,但可當成其他儲存庫 pull 或 push 的來源。依此原理,我們只需找一台 Windows 主機,建立儲存庫資料夾並 git init --bare,再設定網路分享(記得設定權限,要 pull 它的使用者需有讀取權限,如要 push 則需有寫入權限),Windows 主機就搖身一變成為「Git 私服」了。
以下是我的實地練演:
- 在 Hyper-V Windows Server 建立 C:\GitRepos\git-priv-svr-demo,並執行 git init --bare 建立同步專用的 Git Bare Repository:
- 將 C:\GitRepos\git-priv-svr-demo 開成網路分享資料夾,先只設定 user1 Read 權限:
- 在 Windows 10 客戶端使用 git clone \ip-address\git-priv-svr-demo 即可複製本地端儲存庫並建立遠端關聯。完成 git add、git commit,但 git push 時出現錯誤,原因是剛才故意只開讀取權限,clone、pull 沒問題,push 要寫入時存取會被拒。
- 回到 Windows Server 將 user1 權限改成 Read/Write:
- 再試一次 git push,成功!
是不是超簡單?
同理,你也可在 Linux 主機建立目錄跑 git init --bare,客戶端可透過 ssh 協定存取 Linux 上的資料夾,原理跟 Windows 分享目錄沒什麼兩樣,這部分教學不少(在 Linux 中架設 Git 伺服器教學(使用 SSH 加密傳輸)by G.T. Wang、Debian Linux 架設使用 SSH 存取 的 Git Server by Tsung),有需要的同學自己爬文。
以上介紹的做法不需要安裝軟體,但缺點是少了統一的管理介面、每個儲存庫的權限要個別設定,管理工作太瑣碎。要想做到 Github、TFS 等級的管理設定,就要考慮安裝 Git 伺服器,例如:GitLab Server 或較輕巧的 Gogs,前題是需要一台 Linux Server (或跑 Docker);至於 Windows 平台,則有個 Bonobo Git Server,是個用 ASP.NET MVC 寫的「開源專案」,嘿,大家用膝蓋想也知道我會選哪個。下一篇,我們就來玩玩矮黑猩猩 - Bonobo。
- Posted in
- Git
Comments
Post a comment
CommentRecommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK