集中式代碼管理的核心是服務(wù)器,事實(shí)上,SVN的版本庫的確是一種文件服務(wù)器,但不是“一般”的文件服務(wù)器。SVN版本庫的特別之處在于,它會記錄每一次改變:每個文件的改變,甚至是目錄樹本身的改變,例如文件和目錄的添加、刪除和重新組織。一般情況下,客戶端從版本庫中獲取的數(shù)據(jù)是文件系統(tǒng)樹中的新數(shù)據(jù)。但是客戶端也具備查看文件系統(tǒng)樹以前任何一個狀態(tài)的能力。版本控制系統(tǒng)的核心問題,設(shè)計(jì)用來記錄和跟蹤數(shù)據(jù)變化的系統(tǒng)。
二、在Windows下使用Subversion的客戶端程序SVN
1,Subversion體系結(jié)構(gòu)
采用了B/S與C/S相結(jié)合的方式。B/S結(jié)構(gòu),通過瀏覽器訪問倉庫。C/S結(jié)構(gòu),安裝Tortoise SVN后,訪問倉庫。
2, 安裝SVN時注意
svn服務(wù)器有獨(dú)立服務(wù)器和借助apache運(yùn)行2種運(yùn)行方式。存儲版本數(shù)據(jù)有BDB(一種事務(wù)安全型表類型)和FSFS(一種不需要數(shù)據(jù)庫的存儲系統(tǒng)) 兩種方式。因?yàn)锽DB方式在服務(wù)器中斷時,有可能鎖住數(shù)據(jù),所以還是FSFS方式更安全一點(diǎn)。下載安裝SVN成功后,在檔案管理內(nèi)按下鼠標(biāo)右鍵可以看到:
大部分的Tortoise SVN的操作都是透過檔案管理員及鼠標(biāo)右鍵可以完成了。
假設(shè)您的要放置Repository的地方是E盤。您需要先建立一個空的目錄(文件夾) svn_repo。SVN沒有限定Repository目錄名稱,您可以建立任何您自己喜歡的名稱,建議勿使用非英文的檔名。透過您的檔案管理員,在E:svn_repo的圖標(biāo)上,按鼠標(biāo)右鍵后,選擇TortoiseSVN->Create repository here,如圖:
使用的Repository數(shù)據(jù)庫格式選擇FSFS,直到出現(xiàn)SVN repository成功的建立的提示。接下來是要把你的檔案備份進(jìn)來。日后,只要需要使用這個repository,我們可以使用file:///E:/SVN_REPO表示它。SVN是透過這種URL的方式與Repository取得聯(lián)系的。各種URL的格式如下:
file:///磁盤驅(qū)動器|/repository所在目錄/子目錄
http://賬號@服務(wù)器名稱/ repository所在目錄/子目錄
https://賬號@服務(wù)器名稱/ repository所在目錄/子目錄
svn+ssh://賬號@服務(wù)器名稱/ repository所在目錄/子目錄
其中,http表示使用一般的超文字傳輸通訊協(xié)議。https表示使用加密的超文字傳輸通訊協(xié)議。svn+ssh表示透過SSH加密通訊的管道,進(jìn)行存取。
3,建立一個Working目錄
所謂的Working目錄,是平常用來存放工作檔案的地方。通常我們會等到自己的工作做的一個段落的時候再進(jìn)行備份。所以我們平常都是在 Working目錄下面工作,等到適當(dāng)時機(jī)在commit到repository中。舉例來說,我們在D盤下面建立一個名為working的空的文件夾,在檔案管理員中按右鍵,選擇SVN checkout,看到如下的畫面:
首先我們要填入的是repository的位置,對于SVN來說,repository的位置都是URL。Checkout directory這個字段指向您的working目錄。確認(rèn)后按下OK按鈕即可。您將會看到working目錄下面多了一個名為.svn的目錄(這個目錄是隱藏的) 。 SVN會在您的工作目錄下,以及其子目錄下建立這個.svn子目錄。注意,不要進(jìn)去或改動.svn目錄下的任何內(nèi)容,否則會造成SVN無法正常運(yùn)作。
由于原來的repository是空的,所以working目錄也是空的。如果您現(xiàn)在checkout的是一個已經(jīng)有內(nèi)容的repository,您將會看到working目錄下面現(xiàn)在多了許多目錄及檔案。如果您要在一個已經(jīng)存在的SVN Server上面checkout出上面的檔案,只需要給定正確的URL以及working目錄的名稱,可以取得指定的檔案及目錄了。
4,新增檔案及目錄到Repository中
假設(shè)您開發(fā)的程序?qū)⒎旁谇懊娼⒌膚orking目錄下面的my_ prj子目錄。編輯好檔案后,在my_prj目錄上面,按鼠標(biāo)右鍵,選擇TortoiseSVN->Add,如圖:
接著,TortoiseSVN會把準(zhǔn)備要加入的檔案及目錄,顯示給您看。打勾的是等下要被加入到Repository中的。如果您有某些檔案或是目錄不想在這次加入,您可以讓該項(xiàng)目不要被勾選。如此,它不會被加入到Repository去。 注意:Add的動作并未真正的將檔案放到Repository中。僅僅是告知SVN準(zhǔn)備要在Repository中放入這些檔案。此時,查看這些檔案,應(yīng)該會看到一個白色紅底的驚嘆號在檔案文件夾的下方,表示您的working目錄中的檔案與Repository中的檔案還沒有同步。我們要多一個commit的動作,讓這些檔案真正的放入到 Repository中。在my_prj目錄上或是my_prj目錄內(nèi)的空白處按下鼠標(biāo)右鍵,選擇SVN commit。如下的窗口出現(xiàn):
在這個窗口中,下半部會列出一個清單,讓您清楚的了解到哪些檔案要被commit到repository中。如果您有檔案不想在這個時候commit到Repository,您可以取消選取的檔案。 在檔案列表的上方的Message欄里輸入本次commit的目的,這是十分重要的字段,當(dāng)您commit的次數(shù)很多時,可以靠這個訊息知道版本與版本之間的差異。到先前的folder中,確定所有的檔案圖標(biāo)都有綠色勾勾在上面,這樣代表您的檔案都正確無誤的到repository中。有時候,因?yàn)閃indows本身的問題,您可能會看到有些圖標(biāo)沒有變成綠色的勾勾,多按F5幾次,可以解決這個問題。
NOTE:新增的檔案要經(jīng)過提交(Commit)的動作才回真正的放入Repository中。
5,更新檔案及目錄
由于版本控制系統(tǒng)多半都是由許多人共同使用,所以同樣的檔案可能還有人會去進(jìn)行編輯。為了確保您工作目錄中的檔案與Repository中的檔案是同步的,建議您在編輯前都先進(jìn)行更新的動作。在想要更新的檔案或目錄圖標(biāo)上按鼠標(biāo)右鍵,并且選擇SVN Update。會顯示有哪些文件更新了。如果沒有看到檔案更新的相關(guān)信息,這表示您的目錄中的檔案已經(jīng)是新的,無須進(jìn)行更新。
有時我們需要回溯至特定的日期或是版本,這時可以利用SVN的Update to revision的功能。在這個Update窗口中,您可以選擇更新到新版本(HEAD)。也可以選擇更新到某個指定的版本(Revision);虬聪耂how log按鈕,回顧歷史版本。