代碼存儲(chǔ)庫(kù)一直都是程序員的好幫手,尤其是在大型團(tuán)隊(duì)協(xié)作工作時(shí),但是如何選擇適當(dāng)?shù)拇a存儲(chǔ)庫(kù)主機(jī)卻讓很多程序員感到困惑。如今,代碼存儲(chǔ)庫(kù)多種多樣,本文選取了三大主流的代碼存儲(chǔ)庫(kù),進(jìn)行橫向?qū)Ρ龋M軌驅(qū)Τ绦騿T有所幫助。
什么是好的代碼存儲(chǔ)庫(kù)?
版本控制系統(tǒng)(或存儲(chǔ)庫(kù))可以有三種主要類型:
本地 - 所有開發(fā)人員都在同一個(gè)文件系統(tǒng)中。
集中式 - 項(xiàng)目團(tuán)隊(duì)在中央服務(wù)器上具有單個(gè)項(xiàng)目副本,團(tuán)隊(duì)成員將更改提交給一個(gè)副本。
分布式 - 開發(fā)人員在本地存儲(chǔ)庫(kù)中工作,更改在存儲(chǔ)庫(kù)之間共享。
本文將著重討論Git repos,因?yàn)镚it repos是對(duì)開發(fā)團(tuán)隊(duì)最有效率的功能,首先我們看看一個(gè)好的repo中存在哪些組件。
·Pull request:當(dāng)用戶對(duì)源代碼進(jìn)行更改并將其推送到存儲(chǔ)庫(kù)時(shí),他們的協(xié)作者將被通知以獲得討論和審查的更改。
·基于Web的代碼審查。
·Editing:如果一個(gè)倉(cāng)庫(kù)建議實(shí)時(shí)和協(xié)作的編輯,它增加了很多回購(gòu)的質(zhì)量。
·Bug tracking:沒有任何項(xiàng)目沒有bug。所以當(dāng)存儲(chǔ)庫(kù)允許協(xié)同跟蹤和解決錯(cuò)誤時(shí),這是非常好的。
·支持縮寫語法,使代碼可讀。
·雙因素身份驗(yàn)證,確保用戶帳號(hào)的保護(hù)。
·創(chuàng)建庫(kù)的fork和clone。
·用戶可以與任何需要的用戶共享代碼段或文件片段,包括團(tuán)隊(duì)成員,其他用戶甚至自己。
·與第三方服務(wù)集成。
·導(dǎo)入資料庫(kù):當(dāng)用戶從一個(gè)服務(wù)轉(zhuǎn)移到另一個(gè)服務(wù)時(shí),存儲(chǔ)庫(kù)允許他們導(dǎo)入現(xiàn)有項(xiàng)目。
·開源許可證:有時(shí),企業(yè)需要在自己的服務(wù)器上部署內(nèi)部存儲(chǔ)庫(kù),而不是使用現(xiàn)有的公共Web資源。本文介紹的三個(gè)存儲(chǔ)庫(kù)開源的只有GitLab,該系統(tǒng)具有良好的界面,易于安裝。
三大代碼存儲(chǔ)庫(kù)如何選?
目前,所有程序員使用的Git存儲(chǔ)庫(kù)主要有三個(gè),本文會(huì)一一分析它們的利弊。
GitHub
GitHub是git存儲(chǔ)庫(kù)和協(xié)作項(xiàng)目開發(fā)的首選網(wǎng)站。該系統(tǒng)旨在允許用戶輕松創(chuàng)建基于Git的特殊版本控制系統(tǒng)。為什么這么受歡迎?Git通過非線性開發(fā)歷史的可視化工具和導(dǎo)航工具的幫助,支持流暢的版本合并和分割。現(xiàn)在,GitHub擁有5000多萬個(gè)開源項(xiàng)目。
優(yōu)點(diǎn):
GitHub有很多為人稱道的功能,本文只列舉其中幾個(gè):
錯(cuò)誤跟蹤,此功能屬于協(xié)作功能,可以通過在項(xiàng)目中檢測(cè)到的軟件錯(cuò)誤記錄來提高代碼質(zhì)量。
快速搜索,存儲(chǔ)庫(kù)提供方便的項(xiàng)目結(jié)構(gòu),允許有效的搜索和排序。此外,功能良好的SEO允許用戶在公共存儲(chǔ)庫(kù)中找到任何代碼字符串。
社區(qū),截至2017年4月,GitHub的用戶數(shù)量已經(jīng)超過2000萬。這個(gè)世界范圍內(nèi)極大的開發(fā)團(tuán)隊(duì)是共享經(jīng)驗(yàn)和技能的重要來源。用戶可以進(jìn)行溝通,評(píng)論,編輯和跟蹤新聞。
共享,項(xiàng)目源代碼不僅可以使用Git進(jìn)行復(fù)制,還可以作為歸檔下載。
協(xié)作開發(fā),GitHub為團(tuán)隊(duì)管理提供了高效的功能。
兼容性,源代碼位于GitHub的項(xiàng)目可以輕松地定制到任何云主機(jī)服務(wù)。
支持Git,SVN,HG,TFS導(dǎo)入。
缺點(diǎn):
GitHub的服務(wù)不是完全免費(fèi)的,如果想要享受GitHub提供的所有功能,需要付費(fèi)。
大小限制:文件大小不能超過100Mb,存儲(chǔ)庫(kù)可以托管信息1Gb。
GitLab
GitLab服務(wù)也是基于Git版本控制開發(fā)的。盡管GitLab功能與其主要競(jìng)爭(zhēng)對(duì)手GitHub類似,但仍有一些主要特點(diǎn)。GitLab有幾種不同的形式,如適用于企業(yè)的GitLab SAAS,以及用戶的個(gè)性化解決方案GitLab Community Edition。
優(yōu)點(diǎn):
免費(fèi),這意味著用戶可以擁有無限數(shù)量的私有存儲(chǔ)庫(kù)。當(dāng)然為了滿足客戶要求,GitLab也有企業(yè)版,在其基本功能之上增加了一些額外的功能,從而改善了與在線工具,工作流和服務(wù)器管理等的交互。
GitLab在開源許可證下運(yùn)行。
錯(cuò)誤跟蹤和基于Web的代碼編輯。
與LDAP(輕量級(jí)目錄訪問協(xié)議)集成,允許在Internet上定位和訪問各種資源。GitLab EE支持多種LDAP服務(wù)和組同步。
支持Git導(dǎo)入
缺點(diǎn):
界面相對(duì)較慢
存儲(chǔ)庫(kù)常見的技術(shù)問題。
BitBucket
BitBucket服務(wù)也非常類似于GitHub,但是它的大部分功能也略有不同。BitBucket最適合小型開發(fā)團(tuán)隊(duì),隨著團(tuán)隊(duì)的成長(zhǎng),BitBucket提供了與GitHub和GitLab相比更溫和的定價(jià)條件。BitBucket還為團(tuán)隊(duì)提供了靈活的部署模式。
優(yōu)點(diǎn):
對(duì)于小團(tuán)隊(duì)免費(fèi),這意味著最多5名成員的團(tuán)隊(duì)將獲得無限數(shù)量的免費(fèi)存儲(chǔ)庫(kù)。
一個(gè)集成的查詢管理系統(tǒng)。
通過社交媒體和GitHub認(rèn)證。
集成Jira工具。BitBucket和Jira在整個(gè)開發(fā)階段都做了整合,通過集成的錯(cuò)誤跟蹤組件,JIRA自動(dòng)更新有關(guān)檢測(cè)到的問題的信息。
導(dǎo)入現(xiàn)有Git項(xiàng)目。
支持Git,CodePlex,Google Code,HG,SourceForge,SVN導(dǎo)入。
缺點(diǎn):
不開源
系統(tǒng)不穩(wěn)定
如何選擇?
如前文所述,每個(gè)存儲(chǔ)庫(kù)都有其優(yōu)缺點(diǎn),也都有廣大的程序員基礎(chǔ)。
這三個(gè)存儲(chǔ)庫(kù)管理服務(wù)中,只有GitLab是開源的。GitLab社區(qū)版的源代碼在他們的網(wǎng)站上可用,企業(yè)版本是專有的。擁有最大數(shù)量的開源項(xiàng)目的GitHub本身不是開源的。Bitbucket也不是開源的,但是購(gòu)買stand-alone 版本時(shí),將提供完整的源代碼與產(chǎn)品配置選項(xiàng)。
綜合多種情況,我們建議:
如果您需要開源解決方案,請(qǐng)選擇GitLab 。
如果您喜歡使用Atlassian服務(wù),BitBucket 是最佳選擇。
GitHub 是承載開源代碼項(xiàng)目的領(lǐng)先平臺(tái)。