Monorepo
2023/04/22 (Sat.)
今天來聊聊 Google 的 monorepo,也就是全公司的 code 都放在同一個 repository 的這件事。包含我自己第一次接觸 monorepo,或是跟親友提到公司的 monorepo 的時候,都會感到相當不可思議。
可能第一直覺反應,會想說,那在做 git clone 的時候 (題外話,Google 不用 Git,而是用 Perforce 以及 Mercurial 的內部版本),不就全公司的 code 都需要抓到本機來進行開發,這也未免太誇張了。錯了,公司內的開發,基本上不抓 code 的,如果要在本機用自己習慣的 IDE 開發,就直接 mount 一個目錄到雲端 repo 上。或是更扯的是,公司就直接自幹一個超強大的雲端 IDE "Cider" (使用 Visual Studio Code 的介面,修改為符合內部使用的樣子),讓大家可以直接開個網頁,做到開發、編譯、測試、除錯、review、進 code,全部一條龍線上解決,不愧是一個很雲端思維的公司。
這樣的好處就是集中管理,方便跨部門之間,如果需要相同的功能就可以互相引用,減少重新打造輪子的額外負擔。但同時也會讓目錄層級變得又多又雜,要找到自己的專案的所在目錄,往往會需要一點時間。
據說 Meta 也是使用 monorepo。大概只有這種規模等級的公司,會有許多極度偏執的技術狂人員工,也才能做到這樣瘋狂極致的地步吧?

