創(chuàng)建倉庫
既然環(huán)境搭好了,那你可以創(chuàng)建倉庫了。用svn用戶登錄以保證svn用戶和svn組擁有你在倉庫中創(chuàng)建的文件。在 /usr/home/svn/目錄中,鍵入:
% svnadmin create repository
在這個例子中,我的倉庫名為repository。你可以選擇任何對你有幫助的名字。svnadmin create 僅僅創(chuàng)建了Subversion工具所需要的目錄結(jié)構(gòu)。
% ls -F repository
README.txt dav/ format locks/
conf/ db/ hooks/
注意目錄db是默認生成的。因為Subversion使用數(shù)據(jù)庫跟蹤倉庫中文件的變化,所以你必須把你的數(shù)據(jù)放到數(shù)據(jù)庫中。然后,我把備份文件解壓縮,這樣有的一些可以放進去的數(shù)據(jù)。但是要注意這么做的時候,不要把備份文件直接恢復到~svn/repository目錄下。(記得否,它是個數(shù)據(jù)庫)。相反,我新建了個目錄結(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/
導入數(shù)據(jù)
下一步,應該把~svn/www/的數(shù)據(jù)導入到Subversion服務器了。為了實現(xiàn)這個目的,可以使用 svn import 命令:
% svn import www file:///usr/home/svn/repository/www -m "initial import"
svn import 是svn的許多命令中用戶可以使用的一條。鍵入 svn help 可以看到所有可以使用的命令的名字。如果你在svn和help中插入命令,比如 svn import help,你可以看到那條命令的語法幫助。在svn import后面的是包含要導入數(shù)據(jù)的目錄的名字(www)。你的數(shù)據(jù)不一定非得在相同的目錄下,它僅僅是定義了到數(shù)據(jù)的完整路徑,但必須保證你的svn組用戶擁有訪問導入數(shù)據(jù)的權(quán)限。注意:如果你已經(jīng)導入的數(shù)據(jù),原始數(shù)據(jù)沒有必要留在硬盤上了。在我的例子中,我使用了這條命令:
rm -Rf www。
接下來,請注意當我定義倉庫的完整路徑時所使用的語法。Subversion支持多URL模式或者RA(repository aclearcase/" target="_blank" >ccess)模塊。檢驗你的Subversion支持哪種模式:
#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
因為我想要在本地路徑訪問倉庫,所以我使用了file模式。我還可以在這URL后面加上www,因為我想訪問倉庫中名為www的目錄。當然,你能在同一個倉庫中導入多個目錄結(jié)構(gòu),并且用容易記住的名字命名。
后,我使用了 -m 消息開關(guān)把注釋:"initial import"加入倉庫日志中。如果我不包括這個參數(shù),svn將使用默認編輯器(vi)打開日志并要求我填入注釋,否則無法進入下一步。
這是非常關(guān)鍵的一個地方。安裝一個版本控制系統(tǒng)的全部原因是為了允許許多用戶修改文件,并且有可能是并發(fā)的。每一個用戶都應該負責任的記錄清楚他們對哪些文件作了哪些改動。你的工作是讓他們明白為什么svn命令總是提示他們加入注釋。
確定如何訪問倉庫
恭喜你!你現(xiàn)在擁有了一個可以工作的倉庫!現(xiàn)在到了仔細比較各種不同的URL模式并選出適合你需求的訪問方法的好的時間。
免費電子文檔Version Control with Subversion第六章詳細介紹了各種可能的配置。你可以在編譯FreeBSD port的時候,在 make 命令后添加參數(shù) -DWITH_BOOK,把書安裝上。
如果你的用戶通過本地或ssh登錄系統(tǒng),可以使用 file:///訪問。因為用戶對于倉庫時本地(local)的,所以這種情況下,系統(tǒng)不會打開一個 TCP/IP端口監(jiān)聽Subversion連接。然而,它卻要求每個用戶有一個活動的shell帳號并且假定你的用戶可以登錄Unix服務器。和別的shell帳戶一樣,其安全性能由這幾方面決定:用戶密碼的健壯性;倉庫權(quán)限以及組成員的正確配置。讓用戶通過ssh登錄系統(tǒng)并不保證session已被加密。
另一種方案是把Subversion整合進apache服務器。默認情況下,Subversion 的FrssBSD port支持SSL編譯,這意味著你的用戶可以在瀏覽器中使用 https:// 模式訪問倉庫。然而,如果你的apache版本是2.X而不是1.X,要記得在編譯的時候把參數(shù)-DWITH_MOD_DAV_SVN 加入到 make后面。
如果你考慮讓用戶通過瀏覽器訪問,要先仔細閱讀Subversion文檔關(guān)于apahce httpd配置部分,然后你要配置不少東西。幸運的是,文檔很完整!
第三種方案時使用 svnserve 監(jiān)聽網(wǎng)絡連接。文檔建議采用這種模式,無論是通過inetd還是獨