之前聽說 Google 把所有 Source code 都放在同一個 Git 管理,就覺得怪怪的,每個人或第一次 git pull 的時候應該都會炸掉才是。
註:此篇文章會說明,Google 確實把 Source code 放在同一個 Repository,不過是自己做的版本控制系統,不是 Git。
這篇文章把 Google 的程式碼版本控管都做詳細說明:Why Google Stores Billions of Lines of Code in a Single Repository
Google 的程式碼控管系統
以下內容整理自此篇:谷歌的代碼管理
- Google 最早使用 CVS
- 1999年 使用 Perforce + 各種 Cache 機器
- 再來當 Perforce 無法滿足需求時,就自行開發 Piper
- 內部使用 Piper (90% 以上)
- Open Source / 需要外部協作的使用 Git,ex: Android / Chrome
Piper
- Piper 使用分散式的資料庫系統 (以前叫 Bigtable,現在改名叫 Spanner)
- 使用數據
- 10億個文件
- 3500萬次 Commit
- 容量 86TB
- 使用者幾萬人
- 上班日每秒 50萬次 request,高峰 80萬次
- 大部分來自 Google distributed build-and-test systems(自動 Build + 測試系統)
Google 將所有程式碼放在同一個 Repository 的簡化相依性管理
- 程式碼、API 等 code 都在同一個 Repository 裡面,所以在每次 code 有修改,程式會自動 rebuild 相依的 code,如果有大量的失敗,系統會自動撤銷這次 commit。
- API 的作者也可以查看別人怎麼使用他的 API
更多詳細的請回原文觀看囉~