Subversion 就是一個(gè)自由/開源版本控制的軟件,它記錄你每次對數(shù)據(jù)倉庫的修改,并能使你找回某一個(gè)時(shí)刻修改的版本文件。它的核心就是數(shù)據(jù)倉庫,你需要把你的文件提交到數(shù)據(jù)倉庫,并更新數(shù)據(jù)倉庫的文件,及根據(jù)需要能通過版本找到當(dāng)時(shí)的數(shù)據(jù)。所以Subversion 只需要在服務(wù)端進(jìn)行安裝即可。
Subversion軟件簡介
Subversion(簡稱SVN)是近年來崛起的版本管理軟件系統(tǒng),是CVS的接班人。目前,絕大多數(shù)開源軟件都使用SVN作為代碼版管理軟件。
Subversion是版本控制系統(tǒng),與RCS、CVS相比,采用分支管理系統(tǒng),其設(shè)計(jì)目標(biāo)是取代CVS。網(wǎng)上免費(fèi)版本控制服務(wù)多以Subversion為基礎(chǔ)。
Subversion的版本庫可以通過網(wǎng)絡(luò)訪問,用戶可以在不同的計(jì)算機(jī)上操作。在某種程度上,允許用戶在各自的空間內(nèi)修改和管理同一組數(shù)據(jù)可以促進(jìn)團(tuán)隊(duì)合作。因?yàn)樾薷牟辉偈菃尉€(單線的進(jìn)行,也就是說必須一個(gè)一個(gè)地進(jìn)行),開發(fā)進(jìn)展迅速。另外,因?yàn)樗械墓ぷ鞫及姹净?,所以沒有必要擔(dān)心變更錯誤會影響軟件的質(zhì)量。如果發(fā)生不正確的變更,只要取消那個(gè)變更操作即可。一些版本控制系統(tǒng)本身也是軟件配置管理系統(tǒng)(SCM),該系統(tǒng)經(jīng)過精巧的設(shè)計(jì),專門管理源代碼樹,具有與軟件開發(fā)相關(guān)的特性,如支持編程語言或提供程序構(gòu)建工具。但是,Subversion不是這樣的系統(tǒng),而是通用系統(tǒng),可以管理任何類型的文件集。
Subversion功能介紹
1、包含絕大部分CVS的功能
CVS是最基本的版本控制系統(tǒng)。包含了CVS的大部分功能,并且針對有些功能還稍加改進(jìn)。
2、目錄的版本化
將目錄名以版本號的形式體現(xiàn)。
3、基于版本的復(fù)制,刪除和重命名
無論復(fù)制、刪除還是重命名,都會被打上版本號,盡管這聽上去有些奇怪。
4、自由的版本化元數(shù)據(jù)操作
允許任何元數(shù)據(jù)附加在文件或目錄中。這些屬性是鍵/值對,并且被版本化。也提供對修訂版附加任何鍵/值屬性的方法,這些屬性不會被版本化,因?yàn)樗麄儠詣訉⒃獢?shù)據(jù)附加到版本空間中,但他們可以隨時(shí)被更改。
5、混合追蹤
開始加入了混合追蹤功能。
6、文件鎖
支持文件鎖定,當(dāng)多個(gè)用戶試圖編輯同一個(gè)文件時(shí)會收到警告。
7、Apache網(wǎng)絡(luò)服務(wù)的支持,基于WebDAV/DeltaV協(xié)議
使用基于HTTP的WebDAV/DeltaV協(xié)議進(jìn)行網(wǎng)絡(luò)通信,而Apache網(wǎng)絡(luò)服務(wù)器提供網(wǎng)絡(luò)存儲的站點(diǎn)服務(wù)。
8、可執(zhí)行的標(biāo)簽
當(dāng)一個(gè)文件是可執(zhí)行的時(shí)候,會提示,并且當(dāng)這個(gè)可執(zhí)行的文件被放在版本控制中時(shí),會防止該程序檢查其他目錄。
9、獨(dú)立進(jìn)程模式
可以運(yùn)行在獨(dú)立模式下。
10、一個(gè)只讀的存儲鏡像
提供一個(gè)工具,SVNsync, 用于同步主服務(wù)器上的 文件到一個(gè)子存儲服務(wù)器上,并且標(biāo)為只讀的屬性。
Subversion快速入門教程
如何快速建立Subversion服務(wù)器,并且在項(xiàng)目中使用起來,這是大家最關(guān)心的問題,與CVS相比,Subversion有更多的選擇,也更加的容易,幾個(gè)命令就可以建立一套服務(wù)器環(huán)境,可以使用起來,這里配套有動畫教程。
本文是使用Subversion最快速的教程,在最短的時(shí)間里幫助您建立起一套可用的服務(wù)器環(huán)境,只需略加調(diào)整就可以應(yīng)用到實(shí)際項(xiàng)目當(dāng)中。
本教程分為以下幾個(gè)部門,不僅僅是快速入門,最后我們還有一些高級功能的說明,為了說明簡單,教程是在windows下使用的方式,以方便資源有限的項(xiàng)目使用,對于UNIX環(huán)境下,區(qū)別并不大。
軟件下載
服務(wù)器和客戶端安裝
建立版本庫(Repository)
配置用戶和權(quán)限
運(yùn)行獨(dú)立服務(wù)器
初始化導(dǎo)入
基本客戶端操作
1,軟件下載
下載Subversion服務(wù)器程序。
到官方網(wǎng)站的下載二進(jìn)制安裝文件,來到二進(jìn)制包下載部分,找到 Windows NT, 2000, XP and 2003部分,然后選擇" this directory ",這樣我們可以看到許多下載的內(nèi)容,目前可以下載 svn-1.4.0-setup.exe 。
下載Subversion的Windows客戶端TortoiseSVN。
TortoiseSVN是擴(kuò)展Windows Shell的一套工具,可以看作Windows資源管理器的插件,安裝之后Windows就可以識別Subversion的工作目錄。
官方網(wǎng)站是TortoiseSVN ,下載方式和前面的svn服務(wù)器類似,在Download頁面的我們可以選擇下載的版本,目前的最高穩(wěn)定版本的安裝文件為TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi。
2,服務(wù)器和客戶端安裝
服務(wù)器安裝,直接運(yùn)行svn-1.4.0-setup.exe ,根據(jù)提示安裝即可,這樣我們就有了一套服務(wù)器可以運(yùn)行的環(huán)境。
安裝TortoiseSVN,同樣直接運(yùn)行TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi按照提示安裝即可,不過最后完成后會提示是否重啟,其實(shí)重啟只是使svn工作拷貝在windows中的特殊樣式生效,與所有的實(shí)際功能無關(guān),這里為了立刻看到好的效果,還是重新啟動機(jī)器。
3,建立版本庫(Repository)
運(yùn)行Subversion服務(wù)器需要首先要建立一個(gè)版本庫(Repository),可以看作服務(wù)器上存放數(shù)據(jù)的數(shù)據(jù)庫,在安裝了Subversion服務(wù)器之后,可以直接運(yùn)行,如:
svnadmin create E:\svndemo\repository
就會在目錄E:\svndemo\repository下創(chuàng)建一個(gè)版本庫。
我們也可以使用TortoiseSVN圖形化的完成這一步:
在目錄E:\svndemo\repository下"右鍵->TortoiseSVN->Create Repository here...“, 然后可以選擇版本庫模式, 這里使用默認(rèn)即可, 然后就創(chuàng)建了一系列目錄和文件。
4,配置用戶和權(quán)限
來到E:\svndemo\repository\conf目錄,修改svnserve.conf:
# [general]
# password-db = passwd
改為:
[general]
password-db = passwd 然后修改同目錄的passwd文件,去掉下面三行的注釋:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后變成:
[users]
harry = harryssecret
sally = sallyssecret
5,運(yùn)行獨(dú)立服務(wù)器
在任意目錄下運(yùn)行:
svnserve -d -r E:\svndemo\repository 我們的服務(wù)器程序就已經(jīng)啟動了。注意不要關(guān)閉命令行窗口,關(guān)閉窗口也會把svnserve停止。
6,初始化導(dǎo)入
來到我們想要導(dǎo)入的項(xiàng)目根目錄,在這個(gè)例子里是E:\svndemo\initproject,目錄下有一個(gè)readme.txt文件:
右鍵->TortoiseSVN->Import...
URL of repository輸入“svn://localhost/”
ok
完成之后目錄沒有任何變化,如果沒有報(bào)錯,數(shù)據(jù)就已經(jīng)全部導(dǎo)入到了我們剛才定義的版本庫中。
需要注意的是,這一步操作可以完全在另一臺安裝了TortoiseSVN的主機(jī)上進(jìn)行。例如運(yùn)行svnserve的主機(jī)的IP是133.96.121.22,則URL部分輸入的內(nèi)容就是“svn://133.96.121.22/”。
7,基本客戶端操作
取出版本庫到一個(gè)工作拷貝:
來到任意空目錄下,在本例中是E:\svndemo\wc1,運(yùn)行右鍵->Checkout,在URL of repository中輸入svn://localhost/,這樣我們就得到了一份工作拷貝。
在工作拷貝中作出修改并提交:
打開readme.txt,作出修改,然后右鍵->Commit...,這樣我們就把修改提交到了版本庫,我們可以運(yùn)行。
察看所作的修改:
readme.txt上右鍵->TortoiseSVN->Show Log,這樣我們就可以看到我們對這個(gè)文件所有的提交。在版本1上右鍵->Compare with working copy,我們可以比較工作拷貝的文件和版本1的區(qū)別。