<h1>日常啰嗦</h1>
還好在第一篇文章里就列好了接下來的主線及要寫的知識點,不然都不知道要寫什么東西了,開篇里已經(jīng)列了基礎篇要講svn和git的知識點,所以這一篇就寫一下版本控制。
項目實際效果展示在這里,賬密:admin 123456下載地址,點這里github地址,在這里
版本控制的定義
維基百科的解釋:版本控制(Revision control)是維護工程藍圖的標準作法,能追蹤工程藍圖從誕生一直到定案的過程。此外,版本控制也是一種軟體工程技巧,借此能在軟體開發(fā)的過程中,確保由不同人所編輯的同一程式檔案都得到同步。
由這個概念中我們得出兩個版本控制的關鍵點,一個是記錄,一個是同步。
<h1>為什么要用版本控制?</h1>
沒有版本控制系統(tǒng)的話,代碼可能被別人或自己不小心覆蓋或遺失、也不知道是誰因為什么原因改了這段代碼、也沒辦法可以復原回前幾天的修改。有了版本控制系統(tǒng),開發(fā)人員只要將每次開發(fā)的變更都紀錄(Commit)起來,并且透過版本控制系統(tǒng)中進行更新。
每個人都在修改、添加、刪除著自己本地硬盤上的代碼,當他們把這些代碼匯總起來時,麻煩出現(xiàn)了,總不能每次都去copy代碼然后把文件傳給其他人。還有,到底誰改了哪些文件,具體是文件里的哪部分被改動過?一個人的修改會不會把另外一個人的修改給覆蓋掉?上線前,代碼匯總的工作變得非常危險,需要非常小心,一旦出錯后果不堪設想,而且這種情況下,大家的工作不僅僅是開發(fā),無形中,給所有人增加了很多工作量,效率將會變低,如果某個地方出錯,可能代碼匯總的工作又要重來一遍。這只是兩三人的小團隊,如果是幾十人幾百人的大團隊呢?那將會是噩夢,當然,幾百人的團隊也不可能出現(xiàn)這種情況,我們只是做一個假設。
如果這個團隊采用了版本控制。我們可以瀏覽所有開發(fā)的歷史紀錄,而且作任何修改都不再害怕,因為你可以輕易的復原回之前正常的版本,版本控制工具也會在每次提交的時候主動合并所有人的修改并解決可能發(fā)生的沖突,每個人手里一直都是匯總好的代碼。當開發(fā)進行到一定階段,可以直接拿去測試,不需要再有額外的工作來浪費時間。另外,你還可以知道,程序的某個Bug是怎么出現(xiàn)的,是被哪位同事,在哪個時間點造成的,最重要的一點是,不怎么需要刻意去去可以問一下開發(fā)人員進行到哪一步,通過版本控制,掌握團隊的開發(fā)進度,對整個開發(fā)流程有很大的幫助。版本控制工具中也有很多其他功能,我們也可以透過分支和標簽的功能來進行軟件發(fā)行的不同版本,例如穩(wěn)定版、維護版和開發(fā)中版。
<h1>你不是一個人</h1>
上一段落講了一下為什么要用版本控制,只是講一下版控的好處及積極影響,其實最重要的一點就是,我們開發(fā)人員要有一個意識,就是“你不是一個人”,你是團隊中的一員,以往寫的文章中也提過很多次,時間也是重要的資源,需要合理協(xié)調和分配,我們要保證開發(fā)質量和開發(fā)效率,在團隊中普及一些提升工作效率的工具是非常重要的。
<h1>git和svn</h1>
版本控制的工具還是很多的,例如文章開頭所提到的svn和git應該是較為流行的兩個版本控制工具,目前文章中提到的demo源碼都是托管于github上,方便大家去查閱和學習,我的博客中偶爾也會寫一些版本控制相關的文章。有人也對于兩個工具做了一個簡單的總結:“svn 好學不好用,git 好用不好學”。當然,別人所說的總結都只是代表別人,不能代表你的觀點,工具的好壞以及適合與否只有你親身體驗過才會知道。
關于兩者的區(qū)別,可以參考如下兩篇文章,http://www.itdecent.cn/p/bfec042349ca,http://www.cnblogs.com/somethingWithiOS/p/5636356.html,區(qū)別還是很多的,但是最終的目的只有一個,提高我們的開發(fā)效率,減少時間成本。
還有比如“那個誰誰誰用了git了”“git比svn要好”等等諸如此類的觀點,所以“我們也要用git”,針對于此,我想說的是,我們是為了解決問題,而不是為了技術而技術,要根據(jù)自身情況出發(fā),適合自己的才是最好的。
這兩個工具都很優(yōu)秀,具體選哪個,自行決定,關于svn服務器的搭建,網(wǎng)上教程很多,git的話也有一些國內的替代倉庫,GitCafe的GitCafe - Share a cup of Open Source,CSDN的CODE,OSChina的代碼托管 - 開源中國社區(qū),或者你也可以用gitlab自己搭建一個私有倉庫,如果有時間的話,會介紹一下兩個工具搭建的詳細步驟,你現(xiàn)在也可以搜索一下,相關教程也是很多的。
結語
還是要重點提一下,版本控制工具在項目的持續(xù)集成和持續(xù)部署中扮演著重要的角色,這個知識點會在以后的篇幅中展開論述(這里先占個坑)。本篇關于版本控制的文章到此也就告一段落了,主要講述了一下定義及版控的好處,最后提了一下幾種具體的實施方案,選擇哪一種就看各自的需求了,至于最終的方案落地就自己動手實踐吧。****
如果還沒開始用版本控制的抓緊時間用起來吧。