1. 版本控制
? ? 版本控制(Revision/Version control),團(tuán)隊(duì)項(xiàng)目產(chǎn)品開(kāi)發(fā)的過(guò)程中,項(xiàng)目文件代碼保持一致性的一種方式。
? ? 示例:最簡(jiǎn)單的版本控制就是保存項(xiàng)目?jī)?nèi)容的一個(gè)備份,編號(hào)為"A",然后基于原始項(xiàng)目進(jìn)行修改,修改后保存為版本"B",保留軟件不同狀態(tài)的數(shù)份copy,并且適當(dāng)編號(hào)。許多大型開(kāi)發(fā)案都是使用這種簡(jiǎn)單技巧。雖然這種方法能用,但是很沒(méi)效率。一是因?yàn)楸4娴臄?shù)份copy幾乎完全一樣,也因?yàn)檫@種方法要高度依靠開(kāi)發(fā)者的自我紀(jì)律,從而導(dǎo)致錯(cuò)誤。
版本控制系統(tǒng)
? ? ? ? 版本控制系統(tǒng)(Revision/Version control system),就是能自動(dòng)實(shí)現(xiàn)特定/完全版本控制功能的一種軟件實(shí)現(xiàn)平臺(tái),它是文件多版本狀態(tài)共存的一種機(jī)制。
? ? ? ? 示例:軟件初版等級(jí)"A",基于該版本做了一些修改后,提交后版本等級(jí)改為"B",以此類(lèi)推逐漸出現(xiàn)更多的版本,版本控制的一個(gè)最重要的功能就是歷史記錄追蹤,它基于版本號(hào),讓項(xiàng)目整體內(nèi)容恢復(fù)到任一版本狀態(tài),這種功能在防止產(chǎn)品進(jìn)行未知功能設(shè)計(jì)失誤時(shí)特別重要。
2. 為什么用
版本存儲(chǔ)
? ? ? ? 常見(jiàn)的版本存儲(chǔ)方式就是在本地多次備份不同版本的文件,即使按照通用的命名格式保存后,還需要花費(fèi)大量的時(shí)間來(lái)分析整理這些備份文件,而且這種操作很容易出錯(cuò),而且經(jīng)常性的不知道為什么保存,保存了什么變動(dòng)的內(nèi)容,因?yàn)槲覀兒苌倩ǜ嗟臅r(shí)間去記錄和觀察每一個(gè)重要的變化
? ? ? ? 版本控制系統(tǒng)就完美的解決了我們的問(wèn)題,每當(dāng)你提交一次對(duì)項(xiàng)目新的改動(dòng)時(shí),他會(huì)基于最原始的文件,保存每一個(gè)細(xì)節(jié)的變化到一個(gè)版本中,可以幫助我們很好地了解相鄰版本間的變動(dòng)關(guān)系。
? ? ? ? 而且版本控制系統(tǒng)有撤銷(xiāo)的功能,我們可以基于某個(gè)版本號(hào),撤銷(xiāo)所有/部分的變動(dòng)信息,回到當(dāng)時(shí)的文件狀態(tài)。在項(xiàng)目的每一個(gè)重要階段,認(rèn)識(shí)和正確地使用撤銷(xiāo)功能會(huì)讓我們的工作變得非常輕松。協(xié)同合作
? ? ? ? 基于傳統(tǒng)方式修改項(xiàng)目代碼的時(shí)候,必須告知團(tuán)隊(duì)中的其他人,我在干什么,防止他們和我沖突,而這不可能的,所以當(dāng)我好不容易編輯完文件后,發(fā)現(xiàn)該文件被人刪了,感覺(jué)很不舒服。
? ? ? ? 有了版本控制系統(tǒng),團(tuán)隊(duì)每一個(gè)成員都可以自由的修改代碼文件,進(jìn)行團(tuán)隊(duì)的協(xié)同工作,版本控制系統(tǒng)可以幫
? ? ? ? 我們將所有改動(dòng)內(nèi)容合并保存為一個(gè)版本,即使某些功能代碼意外丟失,也可以通過(guò)版本系統(tǒng)找回。
3. 版本控制種類(lèi)
? ? ? ? 隨著互聯(lián)網(wǎng)的發(fā)展,軟件產(chǎn)品的更新迭代越來(lái)越快,軟件產(chǎn)品代碼的版本控制系統(tǒng)也發(fā)生了千變?nèi)f化,既有開(kāi)源的,也有商用的,而且都是針對(duì)各種不同的應(yīng)用環(huán)境設(shè)計(jì)的。目前市場(chǎng)上出現(xiàn)比例較高的版本控制系統(tǒng)主要有兩類(lèi):集中式版本控制系統(tǒng)和分布式版本控制系統(tǒng)。
分類(lèi)及使用
集中式版本控制系統(tǒng)
? ? ? ? 集中式版本控制系統(tǒng):產(chǎn)品項(xiàng)目的標(biāo)準(zhǔn)代碼集中放在中央代碼服務(wù)器的,我們工作時(shí)候,必須連接中央代碼服務(wù)器并獲取最新版本代碼,進(jìn)行編寫(xiě)或者更改代碼并檢查完畢后,推送到中央代碼服務(wù)器。該版本控制系統(tǒng)受網(wǎng)絡(luò)限制比較大。
? ? ? ? 常見(jiàn)的工具:CVS(Concurrent Versions Control System),SVN(Subversion),VSS(Visual So urce Safe)、...
分布式版本控制系統(tǒng)
? ? ? ? 分布式版本控制系統(tǒng):分布式版本控制系統(tǒng)沒(méi)有中央代碼服務(wù)器的。團(tuán)隊(duì)中每個(gè)人的電腦就是一個(gè)完整的代碼版本庫(kù),我們都在自己的電腦上進(jìn)行工作,即使沒(méi)有網(wǎng),工作也不受影響,團(tuán)隊(duì)成員的所有代碼最終會(huì)合并在一起。因?yàn)槊總€(gè)人都可以在本地對(duì)同一個(gè)文件進(jìn)行修改,所以在代碼合并的時(shí)候,會(huì)受到一定的影響。
? ? ? ? 常見(jiàn)的工具:Git、 Mercurial、Monotone、Bitkeeper、...
常見(jiàn)工具使用情況
