<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    心無痕的博客

    常用鏈接

    統(tǒng)計

    積分與排名

    JAVA技術(shù)文檔

    JAVA精典網(wǎng)站

    開發(fā)工具

    數(shù)據(jù)庫

    最新評論

    Subversion使用手記--轉(zhuǎn)載

    一直以來對于自己的項目都是使用CVS進(jìn)行管理,聽說Subversion很久了,但是都沒有時間去嘗試。想想時間都是省出來的,于是決定,一天學(xué)一點,不多,積累成河嘛。
      Subversion和CVS相比,除了包含了CVS的全部特性之外,也加入了新的理念。
                                        新理念
      1、路徑、改名、以及文件meta-data也可進(jìn)入版本控制范圍。
      缺少這些特性是CVS被抱怨最多的方面之一,subversion不止對文件內(nèi)容和文件存放位置加入控制,也對目錄,拷貝,重命名操作加入版本控制。它也允許文件/目錄的相關(guān)元數(shù)據(jù)meta-data和文件/目錄本身一起被版本控制起來,并提供一種機(jī)制對文件的執(zhí)行權(quán)限進(jìn)行控制。
      2、Commit動作真正成為原子級的操作了。
    直到整個commit動作都成功前不會有任何部分的commit會生效。版本修訂號只是預(yù)確認(rèn),而不是對文件預(yù)確認(rèn)。(翻譯不出來 -_-;)日志信息將綁定到修訂信息,而不是象CVS那樣冗余的存儲下來。
     3、提供Apache網(wǎng)絡(luò)服務(wù)器選項,支持WebDAV/DeltaV協(xié)議。
    Subversion可以使用基于http協(xié)議的WebDAV/DeltaV協(xié)議進(jìn)行網(wǎng)絡(luò)通訊,并由Apache服務(wù)器提供源碼倉庫方的網(wǎng)絡(luò)瀏覽服務(wù)。這為Subversion提供了比CVS更好的協(xié)同工作能力,并提供了各式各樣的自由的關(guān)鍵特性:授權(quán),基于路徑的授權(quán),線性壓縮,以及基本源碼倉庫瀏覽。
    4、獨立服務(wù)器選項
    Subversion也能提供獨立服務(wù)器選項,使用自定的協(xié)議(不是每個人都想運行Apache2.x)獨立服務(wù)器可以作為系統(tǒng)的inetd服務(wù)運行,并提供基本的授權(quán)。它也能使用ssh進(jìn)行加密。
     5、建立分支和標(biāo)簽操作成為不耗時的操作。
    這些動作沒理由耗時,所以我們不再讓它們耗時。
    6、分支與標(biāo)簽的實現(xiàn)都是基于底層的拷貝操作,一個拷貝占用一塊固定大小的空間。任何拷貝都可以作為一份標(biāo)簽;假如你開始對某個版本的拷貝進(jìn)行commit動作,那它也就成為一個分支。(這與CVS的"分支節(jié)點做標(biāo)簽"方式不同)
    7、天然的client/server結(jié)構(gòu),層次化庫設(shè)計。
    Subversion從設(shè)計之初即采用client/server機(jī)構(gòu);因此避免了困擾CVS了許久的一些維護(hù)性難題。
    代碼被構(gòu)建為一組帶有詳細(xì)接口說明的模塊,用以方便的由其他應(yīng)用程序進(jìn)行調(diào)用。
    8、Client/server協(xié)議向雙方發(fā)送對比差異。
    網(wǎng)絡(luò)協(xié)議利用寬帶有效地發(fā)送對比差異給客戶端和服務(wù)器端雙方。( CVS只是 server->client,?沒有client->server )
     9、資源消耗與數(shù)據(jù)改變的大小成正比,而不是與數(shù)據(jù)本身大小成正比一般來說,一項Subversion操作所需時間與操作最終變化的大小成正比。而不是與操作所觸及的整個項目的大小成正比,這是Subversion源代碼倉庫模型的一個特性。
     10、有效的處理二進(jìn)制文件
    Subversion對于二進(jìn)制文件和文本文件的處理同樣有效,因為subversion使用一種二進(jìn)制差異比較算法來增量存儲那些連續(xù)的修訂本。
     11、易于語法分析的輸出。
    所有Subversion命令行客戶端的輸出都是仔細(xì)設(shè)計的,可輕松為人所理解,也適于程序自動解析。可進(jìn)行腳本語言處理將是下一步優(yōu)先考慮的特性。
     好了,開始使用吧。
    Subversion到目前的安裝已經(jīng)非常簡單了。到Subversion網(wǎng)站下載Windows下的安裝文件,簡單的步驟就可以完成安裝,而且安裝程序已經(jīng)自動注冊Path,直接在命令行模式就可以使用了。
      首先初始化Repository,輸入命令:
     svnadmin create D:"TestRepository"
    然后,把現(xiàn)有的項目的目錄結(jié)構(gòu)以及文件導(dǎo)入到Repository中:
     svn import D:"Projects"Project1 file:///D:"TestRepository"Project1 -m “初始化“
     用啟動服務(wù)
     svnserve -d -r D:"TestRepository"
     客戶端Checkout
     svn checkout svn://主機(jī)名/Project1?? (即獲取Project1的項目)
     以上都是很簡單的命令。而且上面只用到了一種服務(wù)模式,Apache的還在嘗試中。
     目前只用到了Subversion的基本功能,就已經(jīng)感覺不錯了,覺得入門很輕松,幫助文檔也比CVS要好的多。
     Subversion也有圖形的客戶端,可以在 TortoiseSVN 找到。
     Subversion也VS.Net的插件,可以在AnkhSVN 找到。
     TortoiseSVN相信不錯,因為以前用過它的另一個For CVS的工具,可以和瀏覽器結(jié)合在一起,非常方便和美觀。
    服務(wù)
        Subversion具有兩種服務(wù)模式,一個是作為Apache的模塊,另一個是自定義協(xié)議的Subserve服務(wù)。作為Apache的模塊,客戶端可以通過WebDAV/DeltaV協(xié)議訪問Repository,而使用Subserve則使用
    Subversion的自定義協(xié)議。
    下表是兩種服務(wù)模式的比較:

    功能

     

    Apache + mod_dav_sub

     

    Svnserve

     

    驗證方式

     

    基于HTTPS的X.509、LDAP、NTLM或其他Apache支持的驗證

     

    CRAM-MD5或者SSH

     

    用戶帳戶管理

     

    私有的用戶文件

     

    私有的用戶文件或已有的系統(tǒng)帳戶

     

    授權(quán)管理

     

    blanket read/write access或單一目錄的訪問控制

     

    blanket read/write access

     

    加密

     

    可選的SSL

     

    可選的SSH隧道

     

    交互性

     

    可通過支持WebDAV的客戶端訪問

     

    無交互性

     

    Web訪問

     

    有限的內(nèi)置支持,或通過第三方的工具,例如ViewCVS

     

    通過第三方的支持,如ViewCVS

     

    速度

     

    稍慢

     

    稍快

     

    初始安裝

     

    稍復(fù)雜

     

    相當(dāng)簡單

     

     
                                       啟動svnserve服務(wù)
    svnserve 是一個輕量級的服務(wù), 使用自定義的協(xié)議通過TCP/IP與客戶端通訊。
    客戶端通過由 svn:// 或者 svn+ssh:// 開始的URL訪問svnserve服務(wù)器。
    啟動服務(wù)器
    端口監(jiān)控(inetd)模式
    如果你打算用端口監(jiān)控來啟動處理客戶的訪問請求的進(jìn)程,你可以通過傳入?yún)?shù)-i來啟動:
    svnserve -i
    當(dāng)使用-i參數(shù)啟動服務(wù)的時候,svnserve通過stdin和stdout用自定義協(xié)議和客戶端
    通訊。同時服務(wù)偵聽3690端口。
    獨立端口監(jiān)控進(jìn)程
    使用參數(shù)-d啟動服務(wù)作為一個獨立的端口監(jiān)控進(jìn)程。
    svnserve -d
    當(dāng)運行svnserve在獨立端口監(jiān)控模式時,你可以使用--listen-port=和--listen-host=參數(shù)來自定義需要的端口和主機(jī)名稱。當(dāng)前模式默認(rèn)的端口是3690。
    當(dāng)然,也有第三種方法啟動svnserve,也就是使用“隧道模式”,使用-t參數(shù)啟動服務(wù)。這個模式要求遠(yuǎn)程服務(wù)程序,如RSH或SSH,已經(jīng)成功驗證用戶,并且使用已經(jīng)校驗的用戶啟動一個屬于該用戶的svnserve進(jìn)程。當(dāng)使用該模式提供服務(wù)時,要確認(rèn)啟動的用戶帳戶具備對Repository的讀/寫權(quán)限。
    設(shè)置項目目錄
    當(dāng)svnserve開始運行時,它將會暴露所有的Repository到網(wǎng)絡(luò)上。不過,當(dāng)客戶端需要獲取一個Repository的內(nèi)容時,需要指定Reopsitory的絕對路徑。例如:一個Repository放在文件路徑
    C:/Project Repository/Project1
    那么當(dāng)客戶端訪問時,需要指定絕對路徑:
    svn://host/C:/Project Repository/Project1
    所以,為了增加保密性,你可以使用參數(shù)-r指定需要暴露的Repository的路徑,當(dāng)用戶訪問時,只需指定Repository的名稱即可。例如上面的Repository,當(dāng)啟動服務(wù)時,使用如下的方法:
    svn -d -r C:/Project Repository
    那么當(dāng)客戶端訪問時,則使用
    svn://host/Project1
    就可以獲取數(shù)據(jù)了。
    內(nèi)置的驗證和授權(quán)
    當(dāng)客戶端連接到一個svnserve進(jìn)程時,下面的流程就會觸發(fā):
    1、客戶選擇一個指定的Repository;
    2、服務(wù)處理Repository的配置文件 conf/svnserve.conf文件,并且開始執(zhí)行在其中定義的所有驗證和授權(quán)策略;
    3、依賴與情形和授權(quán)策略:
    a)客戶端也許允許匿名訪問而不需要驗證,或者
    b)客戶但也許需要在任何時候被要求驗證,或者
    c)假如處于"隧道模式"中,客戶端將聲明自己已經(jīng)可以被外部驗證。
    很顯然,如上所說,用戶文件是一個名為svnserve.conf的,放在conf目錄下的文件。
    現(xiàn)在我們來看看如何配置這個文件:
    這個配置文件放置在Repository的目錄中的conf目錄下,它有兩個節(jié)點:
    [general]
    [users]
    其中,[general]的配置信息有:
    anon-access = read
    auth-access = write
    其中表示對于驗證有效的以及沒通過驗證的用戶可以做什么事情。分別有read, write和none
    [users]的標(biāo)簽的配置內(nèi)容有:
    USERNAME = PASSWORD
    password-db = passwd
    realm = My First Repository
    其中表示,用戶名對應(yīng)的密碼是什么,或者指定一個存儲用戶名和密碼的文件的相對或絕對路徑以及指定了Repository的驗證領(lǐng)域。如果兩個Repository有相同的驗證領(lǐng)域,那么它們應(yīng)該有相同的密碼數(shù)據(jù)庫,反之亦然。默認(rèn)的領(lǐng)域就是指向當(dāng)前的Repository的路徑,與服務(wù)器的Repository的根目錄相關(guān)。

    幾個版本控制工具的比較:

    cvs是開源項目,其功能比vss強(qiáng)大很多,可以支持版本合并,多個分支。而vss是比較簡單和易用的配置管理工具。在這兩個工具的選擇上還是要看是項目決定,一般10個人以下的團(tuán)隊vss可能更方便一些~~~

    cvs是并行版本管理器,開源,可以多人同時修改一個文件,當(dāng)出現(xiàn)沖突的時候自動合入或者提示;
    vss是微軟visual studio中附帶的版本管理器,只能在windows局域網(wǎng)環(huán)境下使用。使用一個文件同時只能由一個人來修改的方法來避免沖突。最大的優(yōu)點是易學(xué),并且跟visual studio可以無縫集成。
    cvs,vss 都是版本控制的軟件工具,可以把源代碼或者其他文件的每一次修改的內(nèi)容都保存起來,算是可以看以前版本的代碼。
    vss 基于文件共享的機(jī)制,易用性好,安全性不太好。vss 對于同時增加刪除多個目錄的支持很好。分支合并管理也很容易使用,打標(biāo)簽功能不太好用。vss 基于文件鎖機(jī)制,同一時刻,只能有一個人修改同一個文件。
    cvs 基于 c/s 結(jié)構(gòu),也有工具可以讓它 b/s 運行,不過 b/s 速度慢,使用者不多。cvs 安全控制比較好,對于同時增加多個目錄的支持不太好。cvs 中刪除目錄很難。cvs可以同一時刻多人修改統(tǒng)一文件然后合并,不過只支持文本文件;對于 office 或者其他格式的文檔,多個人同時修改同一個文件很難合并,浪費大家時間。我在網(wǎng)上搜索讓cvs支持鎖機(jī)制,只有少數(shù)文章提到在 server 端用 script 控制,語焉不詳。
    總體來說,cvs 功能比vss強(qiáng)。

    posted on 2008-04-22 09:23 心無痕 閱讀(639) 評論(0)  編輯  收藏 所屬分類: JAVA

    主站蜘蛛池模板: 四虎精品成人免费视频| 国产a级特黄的片子视频免费| 免费观看又污又黄在线观看| 亚洲综合激情另类小说区| 亚洲区小说区图片区| 性色av免费观看| 最近免费mv在线电影| A国产一区二区免费入口| 亚洲JLZZJLZZ少妇| 亚洲免费视频网址| 亚洲国产精品久久| 亚洲第一AAAAA片| 亚洲亚洲人成综合网络| 亚洲国产精品无码久久九九| 免费观看a级毛片| 成年女人看片免费视频播放器| 99久久综合精品免费| 免费国产99久久久香蕉| a级毛片毛片免费观看久潮 | 久久国产免费一区| a毛片免费在线观看| 国产免费AV片在线观看播放| 日本高清不卡中文字幕免费| 羞羞网站免费观看| 爱情岛论坛亚洲品质自拍视频网站| 亚洲最大中文字幕无码网站| 91丁香亚洲综合社区| 亚洲精品国产精品国自产网站 | 91免费福利精品国产| 无码人妻精品中文字幕免费| 久久免费视频99| 久久成人免费大片| 亚洲精品在线免费看| 免费成人激情视频| 动漫黄网站免费永久在线观看| 国产免费AV片在线播放唯爱网| 九九精品免费视频| 高清国语自产拍免费视频国产| 在线A级毛片无码免费真人| 日本免费一二区在线电影| 国产精品深夜福利免费观看|