深入剖析SVN文檔要點(diǎn)
本節(jié)和大家一起學(xué)習(xí)一下SVN文檔的要點(diǎn),在學(xué)習(xí)SVN的過程中你可能會(huì)遇到SVN問題,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西,歡迎打擊一起來學(xué)習(xí)SVN文檔方面的知識(shí)。
1.Subversion可以告訴我們工作文件是處于如下四種狀態(tài)的那一種:
SVN文檔未修改且是當(dāng)前的
文件在工作目錄里沒有修改,在工作修訂版本之后沒有修改提交到版本庫。svncommit操作不做任何事情,svnupdate不做任何事情。
本地已修改且是當(dāng)前的
在工作目錄已經(jīng)修改,從基本修訂版本之后沒有修改提交到版本庫。本地修改沒有提交,因此svncommit會(huì)成功提交,svnupdate不做任何事情。
SVN文檔未修改且不是當(dāng)前的了
這個(gè)文件在工作目錄沒有修改,但在版本庫中已經(jīng)修改了。這個(gè)文件最終將更新到***版本,成為當(dāng)時(shí)的公共修訂版本。svncommit不做任何事情,svnupdate將會(huì)取得***的版本到工作拷貝。
SVN文檔本地已修改且不是***的
這個(gè)文件在工作目錄和版本庫都得到修改。一個(gè)svncommit將會(huì)失敗,這個(gè)文件必須首先更新,svnupdate命令會(huì)合并公共和本地修改,如果Subversion不可以自動(dòng)完成,將會(huì)讓用戶解決沖突。
這看起來需要記錄很多事情,但是svnstatus命令可以告訴你工作拷貝中文件的狀態(tài),關(guān)于此命令更多的信息,請(qǐng)看“查看你的修改概況”一節(jié)
2.混合修訂版本的工作拷貝
作為一個(gè)普遍原理,Subversion努力做到盡可能的靈活,一個(gè)特殊的靈活特性就是讓工作拷貝包含不同工作修訂版本的文件和目錄,不幸的是,這個(gè)靈活性會(huì)讓許多新用戶感到迷惑。如果上一個(gè)混合修訂版本的例子讓你感到困惑,這里是一個(gè)為何有這種特性和如何利用這個(gè)特性的基礎(chǔ)介紹。
SVN文檔更新和提交是分開的
Subversion有一個(gè)基本原則就是一個(gè)“推”動(dòng)作不會(huì)導(dǎo)致“拉”,反之亦然,因?yàn)槟銣?zhǔn)備好了提交你的修改并不意味著你已經(jīng)準(zhǔn)備好了從其他人那里接受修改。如果你的新的修改還在進(jìn)行,svnupdate將會(huì)優(yōu)雅的合并版本庫的修改到你的工作拷貝,而不會(huì)強(qiáng)迫將修改發(fā)布。
這個(gè)規(guī)則的主要副作用就是工作拷貝需要記錄額外的信息來追蹤混合修訂版本,并且也需要能容忍這種混合,當(dāng)目錄本身也是版本化的時(shí)候情況更加復(fù)雜。
舉個(gè)例子,假定你有一個(gè)工作拷貝,修訂版本號(hào)是10。你修改了foo.html,然后執(zhí)行svncommit,在版本庫里創(chuàng)建了修訂版本15。當(dāng)成功提交之后,許多用戶希望工作拷貝完全變成修訂版本15,但是事實(shí)并非如此。修訂版本從10到15會(huì)發(fā)生任何修改,可是客戶端在運(yùn)行svnupdate之前不知道版本庫發(fā)生了怎樣的改變,svncommit不會(huì)拖出任何新的修改。另一方面,如果svncommit會(huì)自動(dòng)下載***的修改,可以使得整個(gè)工作拷貝成為修訂版本15—但是,那樣我們會(huì)打破“push”和“pull”完全分開的原則。因此,Subversion客戶端最安全的方式是標(biāo)記一個(gè)文件—foo.html—為修訂版本15,工作拷貝余下的部分還是修訂版本10。只有運(yùn)行svnupdate才會(huì)下載***的修改,整個(gè)工作拷貝被標(biāo)記為修訂版本15。本節(jié)關(guān)于SVN文檔方面的知識(shí)講解完畢。
【編輯推薦】
- SVN使用手冊(cè)之入門篇
- SVN管理與應(yīng)用相關(guān)的資料參考手冊(cè)
- ApacheSVN服務(wù)器安裝指導(dǎo)手冊(cè)
- 揭開SVN沖突神秘面紗
- SVN服務(wù)器安裝指導(dǎo)手冊(cè)

















