posts - 262,  comments - 221,  trackbacks - 0

          【1】創(chuàng)建一個版本庫


          為了使用SVN,除了必須安裝SVN軟件和客戶端(可選)外,我們還必須創(chuàng)建一個版本庫(Repository)。

          在創(chuàng)建版本庫之前我想說的是:不管如何請確保你有對版本庫進行直接訪問的權(quán)限。因為某些SVN操作的命令不能在客戶端進行,必須在擁有版本庫的機器上進行。所以我建議在本系列中把版本庫安裝在本地。

          按照約定,我們的版本庫要安裝在C:\Develop\MyRepository\Workspace下。那么創(chuàng)建它的命令是什么呢?

           Step 1: 在DOS命令行環(huán)境下轉(zhuǎn)到C:\Develop\MyRepository\目錄下

           Step 2: 在命令下執(zhí)行如下命令:C:\Develop\MyRepository\Workspace>svnadmin create .

          這個命令執(zhí)行后不會在控制臺輸出任何結(jié)果,但是你會發(fā)現(xiàn)現(xiàn)在在Workspace目錄下多出了若干目錄和文件,它們包括:目錄conf、db、hooks、locks和若干文件。這就是它的作用了。SVN通過這個命令為我們立即創(chuàng)建了一個版本庫,以后我們要做的所有操作,每次操作的歷史記錄都會存儲到這里。

          注意:
          svnadmin 命令是SVN管理員使用命令,必須在擁有SVN軟件的機器上進行。假如你是通過客戶端連接的,那你將沒有權(quán)限執(zhí)行這個命令。其次 create 是子命令,指出本次的管理操作是一個創(chuàng)建動作。最后實心句點代表了當(dāng)前目錄。整個命令就是告訴SVN:我希望在當(dāng)前目錄位置創(chuàng)建一個版本庫。你可以指定任意位置來創(chuàng)建一個版本庫

          【2】訪問版本庫


          當(dāng)版本庫創(chuàng)建完畢后,我們想到的第一件事就是如何訪問它。這里訪問版本庫包含三個方面的問題:

           A.以什么協(xié)議訪問?
           B.從什么地方訪問?
           C.用什么命令訪問?


          SVN提供了幾種訪問方式來讓我們看到它的版本庫內(nèi)容。這些方式包括:
           
           A.使用傳統(tǒng)的file協(xié)議訪問方式
           B.使用傳統(tǒng)的http協(xié)議訪問方式
           C.使用獨有的svn協(xié)議訪問方式

          實際上我們最常使用的是第2和第3種方式。第2種方式適用于本地訪問,即不需要跨網(wǎng)絡(luò)的方式。第3種適用的范圍更廣,可以配置從外網(wǎng)訪問SVN,甚至可以使用SSL進行加密。這里因為我使用的Apache+SVN的組合,所以我的訪問方式是使用http協(xié)議。我的Apache的http.conf文件配置如下:

          <Location /svn>
             DAV svn
             SVNParentPath C:\Develop\MyRepository
             AuthType Basic
             AuthName "Subversion repositories"
             AuthUserFile C:\Develop\CollabNet\httpd\conf\passwd 
             AuthzSVNAccessFile C:\Develop\CollabNet\httpd\conf\authz
             Require valid-user 
          </Location>

          這意味著只要我訪問的URL路徑為:http://localhost:8000/svn/Workspace,Apache會知道我實際上訪問的是路徑:C:\Develop\MyRepository\Workspace。并且它知道如何去哪里找用戶驗證文件和權(quán)限文件。

          好了我們的第一個問題:使用什么方式訪問?已經(jīng)解決了。答案就是使用http協(xié)議。

          關(guān)于第二個問題的答案已經(jīng)變得很清晰了,既然http協(xié)議是基于web的協(xié)議,那么我們可以使用任何可以識別HTTP協(xié)議的工具去訪問。從瀏覽器,甚至從DOS命令端都可以。

          現(xiàn)在是最后一個問題了,SVN分別為服務(wù)端和客戶端提供了不同的命令來訪問版本庫。請看下面的表格:
           

          列出目錄結(jié)構(gòu)

          顯示項目信息

          顯示項目內(nèi)容

          顯示工作拷貝信息

          客戶端:svn

          svn list

          svn info

          svn cat

          svn status

          服務(wù)端:svnlook

          svnlook tree

          svnlook info

          svnlook cat


          我們可以看到對于svn和svnlook,它們都有一些相同的子命令:info,cat。那么在使用的時候有什么不同嗎?下面是兩個基本原則:

           A.svn命令是在客戶端使用的,而svnlook命令只能在擁有版本庫的機器上使用(即版本庫服務(wù)器)
           B.svn命令的路徑參數(shù)可以是本地路徑形式(PATH),也可以是遠程路徑形式(URL);svnlook只能使用PATH形式

          關(guān)于這些命令的不同用法,我會在后續(xù)的文章中一一講解。下面我們先來關(guān)注svn list和svnlook tree命令

          【3】svn list和svnlook tree命令
          假設(shè)目前在我們的版本庫下存在兩個目錄:Ericsson和Learning。那么我們現(xiàn)在分別使用svn list和svnlook tree命令來查看這個目錄結(jié)構(gòu):

          C:\>svn list http://localhost:8000/svn/Workspace
          Ericsson/
          Learning/

          C:\>svnlook tree C:\Develop\MyRepository\Workspace
          /
           Learning/
           Ericsson/

          C:\>svnlook tree http://localhost:8000/svn/Workspace
          'http://localhost:8000/svn/Workspace' is a URL when it should be a path

          我們說過svnlook tree命令只能使用本地路徑方式,不能使用遠程路徑,所以第三個命令執(zhí)行時會報錯。

          可能你會說:我并沒有發(fā)現(xiàn)有諸如“C:\Develop\MyRepository\Workspace\Ericsson”或者“C:\Develop\MyRepository\Workspace\Learning”之類的路徑存在啊?注意這里不是以磁盤文件的路徑來表示的,如果我們把C:\Develop\MyRepository\Workspace視為版本庫的根目錄/,其它下級子目錄或文件就是相對于該根目錄/的。

          也許你又會說,那么我們能不能使用諸如svn list C:\Develop\MyRepository\Workspace的方式呢?試一試:

          C:\>svn list C:\Develop\MyRepository\Workspace
          svn: 'C:\Develop\MyRepository\Workspace' is not a working copy

          很遺憾,當(dāng)svn list 命令使用本地路徑的時候,本地路徑必須是一個Working copy下的路徑,也就是說這個PATH必須是一個從版本庫check out出來的項目的根路徑或下級路徑。因為SVN最終會把該本地路徑轉(zhuǎn)換成對應(yīng)的版本庫路徑(也即是遠程路徑形式,所以如果本地路徑不是一個Working copy那么轉(zhuǎn)換工作將會失敗)。

          下面我們把svn list和svnlook tree命令的用法總結(jié)一下:

            A.svn list PATH:列出PATH對應(yīng)的版本庫路徑下的目錄內(nèi)容
            B.svn list URL:  列出URL對應(yīng)的路徑下的目錄內(nèi)容
            C.svnlook tree REPOS_PATH:遞歸地列出REPOS_PATH對應(yīng)的版本庫路徑下的目錄樹內(nèi)容
            D.svnlook tree REPOS_PATH PATH_IN_REPOS: 遞歸地列出REPOS_PATH下子目錄PATH_IN_REPOS路徑下的目錄樹內(nèi)容

          注意使用svnlook tree命令時,有時我們不想看到整棵目錄樹的內(nèi)容,而只想看到某個分支的內(nèi)容,那么我們就可以使用svnlook tree REPOS_PATH PATH_IN_REPOS的形式。另外要注意的是沒有svn list PATH SUB_PATH的形式。



          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2009-12-07 16:12 Paul Lin 閱讀(707) 評論(0)  編輯  收藏 所屬分類: 項目管理
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜阳县| 神农架林区| 黑龙江省| 巴塘县| 榆林市| 屏山县| 龙川县| 民丰县| 六枝特区| 大田县| 徐闻县| 吴忠市| 黔西县| 嘉兴市| 利津县| 太和县| 齐齐哈尔市| 修文县| 台前县| 即墨市| 浦江县| 广饶县| 辽阳市| 五寨县| 收藏| 花莲县| 濮阳市| 河东区| 广昌县| 育儿| 荔波县| 吉安县| 八宿县| 东海县| 民乐县| 余江县| 自治县| 宕昌县| 永和县| 南皮县| 东台市|