面試中SVN管理知識點全面剖析
本節(jié)講解一下SVN管理問題,在學(xué)習(xí)SVN的過程中,你可能會遇到SVN管理問題,只有掌握了SVN管理你才能夠?qū)VN運用自如,歡迎大家一起來學(xué)習(xí)SVN管理。下面我們來看一下具體介紹。
一.SVN的工作模型:Subversion缺省使用復(fù)制-修改-合并模型
實際上是文件共享的問題,目前有兩種策略:
A.鎖定-修改-解鎖模型有一點問題就是限制太多,經(jīng)常會成為用戶的障礙:
鎖定可能導(dǎo)致管理問題。有時候Harry會鎖住文件然后忘了此事,這就是說Sally一直等待解鎖來編輯這些文件,她在這里僵住了。然后Harry去旅行了,現(xiàn)在Sally只好去找管理員放開鎖,這種情況會導(dǎo)致不必要的耽擱和時間浪費。
鎖定可能導(dǎo)致不必要的線性化開發(fā)。如果Harry編輯一個文件的開始,Sally想編輯同一個文件的結(jié)尾,這種修改不會沖突,設(shè)想修改可以正確的合并到一起,他們可以輕松的并行工作而沒有太多的壞處,沒有必要讓他們輪流工作。
鎖定可能導(dǎo)致錯誤的安全狀態(tài)。假設(shè)Harry鎖定和編輯一個文件A??Sally鎖定并編輯文件B,如果A和B互相依賴,這種變化是必須同時作的,這樣A和B不能正確的工作了,鎖定機制對防止此類問題將無能為力—從而產(chǎn)生了一種處于安全狀態(tài)的假相。很容易想象Harry和Sally都以為自己鎖住了文件,而且從一個安全,孤立的情況開始工作,因而沒有盡早發(fā)現(xiàn)他們不匹配的修改。
B.復(fù)制-修改-合并(CVS,SVN采用)
在這種模型里,每一個客戶讀取項目版本庫建立一個私有工作副本—版本庫中文件和目錄的本地映射。用戶并行工作,修改各自的工作副本,最終,各個私有的復(fù)制合并在一起,成為最終的版本,這種系統(tǒng)通常可以輔助合并操作,但是最終要靠人工去確定正誤。
二。分支的概念
我們再來看一下SVN管理中分支的概念。版本控制系統(tǒng)的一個特性是能夠把各種修改分離出來放在開發(fā)品的一個分割線上。這條線被稱為分支。分支經(jīng)常被用來試驗新的特性,而不會對開發(fā)有編譯錯誤的干擾。當(dāng)新的特性足夠穩(wěn)定之后,開發(fā)品的分支就可以混合回主分支里(主干線).
版本控制系統(tǒng)的另一個特性是能夠標(biāo)記特殊的版本(例如某個發(fā)布版本),所以你可以在任何時候重新建立一個特定的構(gòu)件和環(huán)境。這個過程被稱作標(biāo)記。
分支中最重要的概念就是獨立于主干進行開發(fā),在合并前,不同分支提交的代碼互相不可見,互不干擾。但是主干持有所有分支的版本記錄,因此主干可以合并分支。比較適用不同團隊獨立開發(fā)各自模塊。另外在分支合并的時候需要做回歸測試
三。版本庫的布局
SVN管理中版本庫的布局情況,svn文檔是有推薦的目錄結(jié)構(gòu),適用大多數(shù)情況:)當(dāng)然理解了分支的概念,心中有劍也無需受此限制。
- Therearesomestandard,recommendedwaystoorganizearepository
- .Mostpeoplecreateatrunkdirectorytoholdthe“mainline”ofdevelopment,abranchesdirectorytocontainbranchcopies
- ,andatagsdirectorytocontaintagcopies.Ifarepositoryholdsonlyoneproject
- ,thenoftenpeoplecreatethesetop-leveldirectories:
如果一個版本庫包含多個項目,人們通常按分支來安排布局:
大致用法如下:
traceview項目有兩個開發(fā)人員wya,htyoung,同時htyoung做為項目管理員.
1.項目開始時htyoung在trunk創(chuàng)建了最初的文件這個作為mainline,然后用
svncptrunktags/first_init
svncptags/first_initbranches/wya
svncptags/first_initbranches/htyoung
創(chuàng)建工作文件夾,我們的開發(fā)人員wya,htyoung只在他們的開發(fā)文件夾branches/wya,branches/htyoung內(nèi)工作,也就是commit.
2.一段時間后由項目管理員(htyoung),merge所有的修改到主線trunk上,同時htyoung和wya同主線同步.
3.再過一段時間我們發(fā)布0.1版本,為了有一個記錄項目管理員(htyoung)用以下命令建了一個tags
svncptrunktags/Release0.1.0
4.這時又有一個開發(fā)人員JRD來了,項目管理員(htyoung)基于0.1給她建了一個工作分支svncptags/Release0.1.0branches/jrd
5.在我們發(fā)布完0.2時來了一個測試員TA,我們用以下命令為TA建一個工作文件夾
svncptrunktags/Release0.2.0
svncptags/Release0.2.0branches/ta。本節(jié)SVN管理問題講解完畢。
【編輯推薦】