面試官:說(shuō)說(shuō)你對(duì)版本管理的理解?常用的版本管理工具有哪些?
本文轉(zhuǎn)載自微信公眾號(hào)「JS每日一題」,作者灰灰。轉(zhuǎn)載本文請(qǐng)聯(lián)系JS每日一題公眾號(hào)。
一、是什么
版本控制(Version control),是維護(hù)工程藍(lán)圖的標(biāo)準(zhǔn)做法,能追蹤工程藍(lán)圖從誕生一直到定案的過(guò)程。此外,版本控制也是一種軟件工程技巧,借此能在軟件開(kāi)發(fā)的過(guò)程中,確保由不同人所編輯的同一程序文件都得到同步
透過(guò)文檔控制,能記錄任何工程項(xiàng)目?jī)?nèi)各個(gè)模塊的改動(dòng)歷程,并為每次改動(dòng)編上序號(hào)
一種簡(jiǎn)單的版本控制形式如下:賦給圖的初版一個(gè)版本等級(jí)“A”。當(dāng)做了第一次改變后,版本等級(jí)改為“B”,以此類推
版本控制能提供項(xiàng)目的設(shè)計(jì)者,將設(shè)計(jì)恢復(fù)到之前任一狀態(tài)的選擇權(quán)
簡(jiǎn)言之,你的修改只要提到到版本控制系統(tǒng),基本都可以找回,版本控制系統(tǒng)就像一臺(tái)時(shí)光機(jī)器,可以讓你回到任何一個(gè)時(shí)間點(diǎn)
二、有哪些
版本控制系統(tǒng)在當(dāng)今的軟件開(kāi)發(fā)中,被認(rèn)為是理所當(dāng)然的配備工具之一,根據(jù)類別可以分成:
- 本地版本控制系統(tǒng)
- 集中式版本控制系統(tǒng)
- 分布式版本控制系統(tǒng)
本地版本控制系統(tǒng)
結(jié)構(gòu)如下圖所示:
優(yōu)點(diǎn):
- 簡(jiǎn)單,很多系統(tǒng)中都有內(nèi)置
- 適合管理文本,如系統(tǒng)配置
缺點(diǎn):
- 其不支持遠(yuǎn)程操作,因此并不適合多人版本開(kāi)發(fā)
集中式版本控制系統(tǒng)
結(jié)構(gòu)如下圖所示:
優(yōu)點(diǎn):
- 適合多人團(tuán)隊(duì)協(xié)作開(kāi)發(fā)
- 代碼集中化管理
缺點(diǎn):
- 單點(diǎn)故障
- 必須聯(lián)網(wǎng),無(wú)法單機(jī)工作
代表工具有SVN、CVS:
SVN
TortoiseSVN是一款非常易于使用的跨平臺(tái)的 版本控制/版本控制/源代碼控制軟件
CVS
CVS是版本控制系統(tǒng),是源配置管理(SCM)的重要組成部分。使用它,您可以記錄源文件和文檔的歷史記錄
老牌的版本控制系統(tǒng),它是基于客戶端/服務(wù)器的行為使得其可容納多用戶,構(gòu)成網(wǎng)絡(luò)也很方便
這一特性使得CVS成為位于不同地點(diǎn)的人同時(shí)處理數(shù)據(jù)文件(特別是程序的源代碼)時(shí)的首選
分布式版本控制系統(tǒng)
結(jié)構(gòu)如下圖:
優(yōu)點(diǎn):
- 適合多人團(tuán)隊(duì)協(xié)作開(kāi)發(fā)
- 代碼集中化管理
- 可以離線工作
- 每個(gè)計(jì)算機(jī)都是一個(gè)完整倉(cāng)庫(kù)
分布式版本管理系統(tǒng)每個(gè)計(jì)算機(jī)都有一個(gè)完整的倉(cāng)庫(kù),可本地提交,可以做到離線工作,則不用像集中管理那樣因?yàn)閿嗑W(wǎng)情況而無(wú)法工作
代表工具為Git、HG:
Git
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng),旨在快速高效地處理從小型到大型項(xiàng)目的所有事務(wù)
特性:易于學(xué)習(xí),占用內(nèi)存小,具有閃電般快速的性能
使用Git和Gitlab搭建版本控制環(huán)境是現(xiàn)在互聯(lián)網(wǎng)公司最流行的版本控制方式
HG
Mercurial是一個(gè)免費(fèi)的分布式源代碼管理工具。它可以有效地處理任何規(guī)模的項(xiàng)目,并提供簡(jiǎn)單直觀的界面
Mercurial是一種輕量級(jí)分布式版本控制系統(tǒng),采用 Python語(yǔ)言實(shí)現(xiàn),易于學(xué)習(xí)和使用,擴(kuò)展性強(qiáng)
三、總結(jié)
版本控制系統(tǒng)的優(yōu)點(diǎn)如下:
記錄文件所有歷史變化,這是版本控制系統(tǒng)的基本能力
隨時(shí)恢復(fù)到任意時(shí)間點(diǎn),歷史記錄功能使我們不怕改錯(cuò)代碼了
支持多功能并行開(kāi)發(fā),通常版本控制系統(tǒng)都支持分支,保證了并行開(kāi)發(fā)的可行
多人協(xié)作并行開(kāi)發(fā),對(duì)于多人協(xié)作項(xiàng)目,支持多人協(xié)作開(kāi)發(fā)的版本管理將事半功倍
參考文獻(xiàn)
https://pm.readthedocs.io/vcs/understanding.html
https://zh.wikipedia.org/wiki/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6