Meta開源自家的源碼控制系統(tǒng)Sapling客戶端,Sapling是與Git兼容源碼控制系統(tǒng),Meta強調(diào),Sapling具備高可用性,可以支持全球最大的單體存儲庫。Meta目前僅先開源Sapling客戶端,但預(yù)計接下來還會開源和Sapling兼容的虛擬文件系統(tǒng),以及Sapling服務(wù)器。
源碼控制已經(jīng)成為現(xiàn)代開發(fā)人員最重要的工具,Git、GitHub和GitLab等工具已然成為整個軟件產(chǎn)業(yè)的基礎(chǔ),而在Meta中,源碼控制負(fù)責(zé)存儲開發(fā)人員開發(fā)中的程序代碼、歷史記錄,并提供程序代碼服務(wù),Meta提到,源碼控制工具是他們快速開發(fā)產(chǎn)品的關(guān)鍵,因此投入許多資源進(jìn)行改善。
在過去10年,Meta一直開發(fā)并發(fā)展自家的源碼控制工具Sapling,現(xiàn)在Meta開源其客戶端,使得任何開發(fā)者,都可以使用Sapling內(nèi)置的Git支持來操作存儲庫。Sapling是Meta著重可用性和可擴展性的源碼控制系統(tǒng),許多操作概念與Git和Mercurial相似。
當(dāng)Sapling客戶端、服務(wù)器和虛擬文件系統(tǒng)共同運行時,Sapling可以服務(wù)數(shù)千萬文件,并且負(fù)荷數(shù)千萬次提交以及分支,在Meta主要是將Sapling用于處理大型單體存儲庫(Monorepo),但Sapling也支持復(fù)制,并且與其他Git存儲庫互動,也可供個人開發(fā)使用,與GitHub和GitLab等Git托管服務(wù)一起運行。
大型單體存儲庫正是Meta創(chuàng)建Sapling的原因,Meta表示,在10年前,任何公共源碼控制系統(tǒng),都無法處理他們的大型單體存儲庫,而他們也不愿意拆分存儲庫,因為會失去單體存儲庫所帶來的好處,像是簡化相依項目管理,以及快速進(jìn)行大規(guī)模更新的能力。
原本Sapling是以Mercurial開源項目的擴展項目啟動,但后來迅速發(fā)展出具有新存儲格式、協(xié)議、算法和行為的獨立系統(tǒng)。而在提高規(guī)模的同時,Meta還想要改善源碼控制的實際體驗,Meta提到,當(dāng)前版本控制系統(tǒng)的可用性仍然不足,開發(fā)人員需要維護(hù)存儲庫復(fù)雜性,常需要以復(fù)雜的命令解決簡單的問題。
Sapling則可以改善這些狀況,其操作起來和Git的基本命令類似,用戶可以復(fù)制存儲庫、提交、修改并推送程序代碼至服務(wù)器,但是每一個命令都以簡單易用為設(shè)計目標(biāo),每個命令只執(zhí)行一件事,本地分支名稱可選,且沒有暫存區(qū)。