創(chuàng)建倉(cāng)庫(kù)
既然環(huán)境搭好了,那你可以創(chuàng)建倉(cāng)庫(kù)了。用svn用戶登錄以保證svn用戶和svn組擁有你在倉(cāng)庫(kù)中創(chuàng)建的文件。在 /usr/home/svn/目錄中,鍵入:
% svnadmin create repository
在這個(gè)例子中,我的倉(cāng)庫(kù)名為repository。你可以選擇任何對(duì)你有幫助的名字。svnadmin create 僅僅創(chuàng)建了Subversion工具所需要的目錄結(jié)構(gòu)。
% ls -F repository
README.txt dav/ format locks/
conf/ db/ hooks/
注意目錄db是默認(rèn)生成的。因?yàn)镾ubversion使用數(shù)據(jù)庫(kù)跟蹤倉(cāng)庫(kù)中文件的變化,所以你必須把你的數(shù)據(jù)放到數(shù)據(jù)庫(kù)中。然后,我把備份文件解壓縮,這樣有的一些可以放進(jìn)去的數(shù)據(jù)。但是要注意這么做的時(shí)候,不要把備份文件直接恢復(fù)到~svn/repository目錄下。(記得否,它是個(gè)數(shù)據(jù)庫(kù))。相反,我新建了個(gè)目錄結(jié)構(gòu):
% pwd
/usr/home/svn
% mkdir www && cd www
% mkdir branches tags trunk
% cd trunk
% tar xzvf /full/path/to/www.tar.gz .
% cd
這樣,svn用戶的主目錄結(jié)構(gòu)像這樣:
% ls -F ~svn
repository/ www/
導(dǎo)入數(shù)據(jù)
下一步,應(yīng)該把~svn/www/的數(shù)據(jù)導(dǎo)入到Subversion服務(wù)器了。為了實(shí)現(xiàn)這個(gè)目的,可以使用 svn import 命令:
% svn import www file:///usr/home/svn/repository/www -m "initial import"
svn import 是svn的許多命令中用戶可以使用的一條。鍵入 svn help 可以看到所有可以使用的命令的名字。如果你在svn和help中插入命令,比如 svn import help,你可以看到那條命令的語(yǔ)法幫助。在svn import后面的是包含要導(dǎo)入數(shù)據(jù)的目錄的名字(www)。你的數(shù)據(jù)不一定非得在相同的目錄下,它僅僅是定義了到數(shù)據(jù)的完整路徑,但必須保證你的svn組用戶擁有訪問(wèn)導(dǎo)入數(shù)據(jù)的權(quán)限。注意:如果你已經(jīng)導(dǎo)入的數(shù)據(jù),原始數(shù)據(jù)沒(méi)有必要留在硬盤(pán)上了。在我的例子中,我使用了這條命令:
rm -Rf www。
接下來(lái),請(qǐng)注意當(dāng)我定義倉(cāng)庫(kù)的完整路徑時(shí)所使用的語(yǔ)法。Subversion支持多URL模式或者RA(repository aclearcase/" target="_blank" >ccess)模塊。檢驗(yàn)?zāi)愕腟ubversion支持哪種模式:
#svn --version
svn, version 1.1.3 (r12730) compiled Mar 20 2005, 11:04:16Copyright (C) 2000-2004 CollabNet.Subversion is open source software, see http://subversion.tigris.org/This product includes software developed by CollabNet http://www.Collab.Net/.The following repository access (RA) modules are available:* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol. - handles 'http' schema - handles 'https' schema* ra_local : Module for accessing a repository on local disk. - handles 'file' schema* ra_svn : Module for accessing a repository using the svn.network protocol. - handles svn schema
因?yàn)槲蚁胍诒镜芈窂皆L問(wèn)倉(cāng)庫(kù),所以我使用了file模式。我還可以在這URL后面加上www,因?yàn)槲蚁朐L問(wèn)倉(cāng)庫(kù)中名為www的目錄。當(dāng)然,你能在同一個(gè)倉(cāng)庫(kù)中導(dǎo)入多個(gè)目錄結(jié)構(gòu),并且用容易記住的名字命名。
后,我使用了 -m 消息開(kāi)關(guān)把注釋:"initial import"加入倉(cāng)庫(kù)日志中。如果我不包括這個(gè)參數(shù),svn將使用默認(rèn)編輯器(vi)打開(kāi)日志并要求我填入注釋,否則無(wú)法進(jìn)入下一步。
這是非常關(guān)鍵的一個(gè)地方。安裝一個(gè)版本控制系統(tǒng)的全部原因是為了允許許多用戶修改文件,并且有可能是并發(fā)的。每一個(gè)用戶都應(yīng)該負(fù)責(zé)任的記錄清楚他們對(duì)哪些文件作了哪些改動(dòng)。你的工作是讓他們明白為什么svn命令總是提示他們加入注釋。
確定如何訪問(wèn)倉(cāng)庫(kù)
恭喜你!你現(xiàn)在擁有了一個(gè)可以工作的倉(cāng)庫(kù)!現(xiàn)在到了仔細(xì)比較各種不同的URL模式并選出適合你需求的訪問(wèn)方法的好的時(shí)間。
免費(fèi)電子文檔Version Control with Subversion第六章詳細(xì)介紹了各種可能的配置。你可以在編譯FreeBSD port的時(shí)候,在 make 命令后添加參數(shù) -DWITH_BOOK,把書(shū)安裝上。
如果你的用戶通過(guò)本地或ssh登錄系統(tǒng),可以使用 file:///訪問(wèn)。因?yàn)橛脩魧?duì)于倉(cāng)庫(kù)時(shí)本地(local)的,所以這種情況下,系統(tǒng)不會(huì)打開(kāi)一個(gè) TCP/IP端口監(jiān)聽(tīng)Subversion連接。然而,它卻要求每個(gè)用戶有一個(gè)活動(dòng)的shell帳號(hào)并且假定你的用戶可以登錄Unix服務(wù)器。和別的shell帳戶一樣,其安全性能由這幾方面決定:用戶密碼的健壯性;倉(cāng)庫(kù)權(quán)限以及組成員的正確配置。讓用戶通過(guò)ssh登錄系統(tǒng)并不保證session已被加密。
另一種方案是把Subversion整合進(jìn)apache服務(wù)器。默認(rèn)情況下,Subversion 的FrssBSD port支持SSL編譯,這意味著你的用戶可以在瀏覽器中使用 https:// 模式訪問(wèn)倉(cāng)庫(kù)。然而,如果你的apache版本是2.X而不是1.X,要記得在編譯的時(shí)候把參數(shù)-DWITH_MOD_DAV_SVN 加入到 make后面。
如果你考慮讓用戶通過(guò)瀏覽器訪問(wèn),要先仔細(xì)閱讀Subversion文檔關(guān)于apahce httpd配置部分,然后你要配置不少東西。幸運(yùn)的是,文檔很完整!
第三種方案時(shí)使用 svnserve 監(jiān)聽(tīng)網(wǎng)絡(luò)連接。文檔建議采用這種模式,無(wú)論是通過(guò)inetd還是獨(dú)