• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    LINUX作CVS服務器之1

    發布: 2007-6-21 12:06 | 作者:   | 來源:   | 查看: 20次 | 進入軟件測試論壇討論

    領測軟件測試網

       
      一、版本控制的概念以及幾種版本控制工具的簡介

    1.源文件的標示與版本的概念

    源文件是一個軟件最為重要的一個組成單元,因此源文件的管理也是整個軟件組成管理中最重要的一環,是進行高效軟件開發的關鍵歲所在.對源文件進行管理,必須對源文件進行標示.通常認為只需文件名.而實際上,在一個版本維護工具下對于源文件的標示包括兩部分:文件名與版本.即:源文件可以用如下的二元組表示 {filename,version};

    所謂版本,一般的軟件開發人員都有一個直觀的理解,但卻很難做出準確的定義.版本,是指某一特定對象的具體實例的潛在存在.這里的某一特定對象是指由版本維護工具管理的如軟件組成單元,一般指源文件.具體實例則是指軟件開發人員從軟件儲藏室中恢復出來的軟件組成單元的具有一定內容和屬性的一個真實拷貝.

    把版本定義成一個潛在的存在是基于以下考慮:版本作為源文件的一個表示部分,軟件人員對它的引用實際上想得到不同的版本對應的不同源文件,所以說版本是一種抽象.它用來定義一個具體實例應該具有的內容與屬性.也就是說版本是一個具體實例的潛在存在,是源文件不同化身的抽象.

    有了以上對版本概念的認識.大家對版本維護工具就有了一定的理解:版本維護工具,應該對開發人員屏蔽源文件的存儲方式對開發人員是透明的,開發人員不需要明白軟件存儲庫里有什么源文件,只需要說明需要什么樣的源文件以及要存儲什么樣的源文件,版本維護工具自動完成這一切工作.關于版本維護的理論還包括:版本的空間,維數,版本的表示,存儲,合并等理論,因為我們這里主要說明cvs 的linux 服務器,所以一切從簡,對這方面有興趣朋友可以閱讀相關書籍

    本章所講的cvs 就是這樣的一個強大的工具.在講述cvs 前我們先介紹其他幾個版本維護工具.

    2.幾種版本維護工具的簡介

    2.1 SCCS

    SCCS的全稱是Source Code Control System .在介紹之前先定義工作文件的概念.所謂工作文件,是指從軟件儲藏室得到的有”寫”權限的源文件.

    SCCS 是一種基本的源文件版本控制工具,它適用于任何正文文件的版本維護.它基于單一文件的版本控制,通常,它的軟件儲藏室和要維護的文件在同一目錄下.

    SCCS 工作時,有一個專門的SCCS 格式的文件保留其源文件的編碼版本,其記錄了足夠的信息來生成新的版本,并記錄了誰對文件有修改權,擁有該版本的”鎖”.

    SCCS的版本好事一個四元組,即:發行號,級號,分支號,序號(release,level,banch,sequence)

    2.2 RCS

    RCS是另一種基本的源代碼管理工具,是WALTER.f.Tichy 于1980 年在Indina的 Purdue 大學開發的.RCS和SCCS 類似,也是基于單一文件的版本維護系統.RSC 通過RSC 文件進行文件管理;使用RCS 進行維護的過程與SCCS 相似,也是按恢復提交模式進行的,不多贅述

    RCS文件,是RCS 系統中源文件的儲藏室,它是一種特殊的編碼文件,包含了開發人員恢復老版本的源文件以供開發使用的足夠信息.它通常是以.V 為后綴

    它的結構如下:

    * RCS 頭,這一部分記錄了對應文件的版本樹的頭版本號,

    * 版本描述: 這一部分描述RCS樹上的各個節點的屬性性質

    * 初始信息:之一部分是在創建第一個RCS 版本時的表述內容

    * 文件內容

    RCS與SCCS 相似,RCS將所維護的版本也組織成樹形結構.但RCS允許多重分支,即,RCS的版本號不像SCCS那樣是一個四元組.形式為;發行號,級號,[分支號,序號].版本樹如下

    2.3 綜述

    這兩種版本維護工具的共同點是:采用了”鎖”的方式,對當前問堅持有”鎖”的用戶才有對文件的修改權.他們采用的機制是所謂的” lock-modify-unlock”.采用這種即只有一個知名的弱點,那就是不至此多用戶并發的使用.

    二、在linux 下構建cvs 服務器

    1.CVS簡介及基本原理

    CVS 的全稱是Current Version Control. CVS是一種GNU 軟件包.由Intersolv公司開發,最新的版本是 1.10.8.它是一種基于RCS系統的維護工具.它明確的將源文件的存儲和用戶的工作空間獨立開來,有在一定的模式上擴展了RCS的恢復提交功能. 并使其有利與并行開發.

    CVS 將源文件的RCS 文件根據其源碼樹的層次集中在一個目錄下,該目錄的絕對路徑由環境變量CVSROOT 定義.

    可見該目錄可以分成兩部分:一部分為${CVSROOT}/CVSROOT,它包含CVS所需的一些管理 文件.另一部分為源文件所形成的RCS 文件,并按軟件開發的源碼樹的結構來構成.

    2.CVS 在進行源代碼管理時的特點

    2.1 源代碼空間與用戶空間分離.

    CVS 系統將源代碼文件放在repository下,用戶要修改文件必須將repository 下的文件作一個拷貝之后才能進行,

    2.2 并發訪問

    CVS 系統允許多個開發人員同時獲取同一文件的的同版本源文件.當然這也是CVS獲得廣泛應用的主要原因.開發人員提取一個文件時,將在自己的工作空間建立一個與其他開發人員相互獨立的拷貝,此文件的版本號與文件“頭”版本相同,除非他用commit 命令完成版本的永久性升級.而此時,其他用戶可用 undate 命令是自己的版本號與”最新的頭版本號”相一致.:若用戶在checkout 后發現頭版本改變了,可用RCS系統的rcsmerge 命令形成一個新文件,這個新文件及包括原來的內容,又包括用戶修改的內容.此示弱與其他同時在對同一文件修改的開發人員發生沖突,可通知他們進行手工修改

    所以說,CVS系統是一個Copy-Modify-Merge 的算法而不是以上我們提到的那兩個系統所采用的lock-modify-unlockj機制 這種算法的好處在于,軟件開發人員可以得到一份源文件的拷貝(Copy),并不會對該文件上”鎖”,因此為并行開發提供了可能,在得到 拷貝后, 開發人員可以在自己的開發環境下進行修改(Modify),然后提交自己修改后的文件,與源文件進行合并(Merge).形成新的版本,

    2.3 源文件共享

    CVS對${CVSROOT}的使用是不同的用戶可按自己的需要拷貝不同的模板,修改后載體交給${CVSROOT}.這樣用戶可共享源文件.這當然是我們建立CVS服務器所必需的

    2.4 獨立的工作環境

    用戶在自己的工作環境下進行修改開發,自然有獨立的工作環境,值得說的實.CVS 也支持”鎖”的機制.允許用戶對自己獲得的模板拷貝進行鎖定

    2.5 標記

    CVS為了方便用戶,引入了一個tag文件,該文件位于用戶工作目錄下,與被他標記的文件一級的CVS 目錄下對特定的tag 文件操作,即對相應版本的操作,即使這個版本被修改過.

    3.CVS 的獲得安裝

    CVS 在一般的linux發行版本中都有默認的安裝.如果你的系統沒有安裝也沒有關系,CVS可以在intenet 上很方便的得到. 它的源碼在 ftp://202.113.29.4/pub1/unix/cvs 它的說明文檔在ftp://202.113.29.4/doc/cvs.任何人可以很方便的下載.目前他的最新版本是2..10.8..

    安裝過程大致如下:

    在任一目錄下解開下載的壓縮文件.

    利用文件包內的安裝工具,完成安裝,(內有說明文檔).

    通常是:make config 和 make install

    (不通版本的,安裝方法可能不同,具體的請參見,它自身所帶的安裝文檔)

    4.服務器的安裝使用

    在安裝完CVS 系統后我們便可以開始CVS倉庫的安裝. 在linux環境里,CVS的使用一般是以命令行方式,也有一些GUI的前端工具,如 TKCVS等.這里我們將應用CVS 的一般命令即 cvs [cvs的選項] cvs-command [command 選項] 的方式完成服務器的配置.

    4.1 軟件倉庫(repository)的管理

    創建CVSROOT根目錄

    首先編輯有關的環境變量.(CVS的幾個重要的環境變量如下:

    CVSROOT 倉庫根目錄的完整路徑名

    CVSREAD 如果設置,表明在checkout操作時所有的文件都置成只讀

    CVSBIN CVS利用了很多RCS的命令,指定樂RCS工具的路徑

    CVSEDITOR 指定用戶書寫日志信息所使用的編輯器

    CVS_RSH 啟動一個遠程CVS服務器時,所使用的shell的名稱

    CVS_SERVER 決定"cvs server"的名字,缺省是CVS

    CVSWRAPPERS cvswrapper腳本, 用來指定包裝文件名.)

    其中中重要的是CVSROOT,它指明了倉庫所在的位置,在創立新的倉庫時,它是必不可少的.因此一般需要加入環境變量CVSROOT的定義.如在 /etc/bashrc 文件中加入下面兩行

    CVSROOT=/cvsroot

    export CVSROOT

    或者直接在命令行上執行

    $ export CVSROOT=/cvsroot

    然后在相應位置開始創建CVSROOT

    $mkdir cvsroot

    $cvs init

    如果沒有定義變量CVSROOT 會出現這樣的提示:

    cvs init : No CVSROOT specified! Please use the ‘-d’ option

    cvs [initn aborted]:or set the CVSROOT environemnt variable

    如果你是在不想定義環境變量,你可以用這樣的命令:

    cvs –d /cvroot init 不過即使你定義了CVSROOT,參數 –d 后的內容也會覆蓋它.如果沒有錯誤提示, 恭喜你, 你的CVS 軟件庫已經建立好了.

    剩下的問題就是怎樣時多用戶來使用這個倉庫來進行并行的軟件開發與版本控制.還有作為CVS 管理員你應該設置你的用戶的權限. 此時,你的cvsroot 下有一CVSROOT 子目錄.他下面的文件時CVS 的配置文件,用

    ls /cvsroot/CVSROOT 有一系列文件,他們的用途分別是:

    checkoutlist 支持CVSROOT目錄的其它管理文件,允許為各種CVS命令定置信息

    commitinfo 在cvs commit命令執行時,這個文件指定樂文件提交時執行的命令

    cvswrappers 定義樂一個包裝程序當文件登記或檢取時就會執行.

    editinfo 允許你在commit命令啟動前在日志信息被記錄后執行的腳本

    history 跟蹤所有影響倉庫的命令

    loginfo 類似coimmitinfo, 只是在文件提交后執行

    modules 允許為一組文件定義一個符號,否則必須為每一個要引用的文件指定cvs倉庫的路徑名($CVSROOT)

    nitify 控制從"watch"來的通知."watch"由"cvs watch add"和"cvs edit" 設置

    rcsinfo 為commit log回話指定一個模板.

    taginfo 定義樂在任意"tag"操作后執行的程序.

    Passwd 缺省沒有.存儲用戶passworld的文件

    設置管理權限:

       源碼管理員應對倉庫下的文件和目錄設置恰當的許可權限來控制訪問. 所有的RCS文件(以,v結尾)是只讀方式,倉庫中的目錄應當對使用者有寫權,以便允許其更改.

    多個軟件庫的建立

    如果你有幾個開發組, 他們的工作毫不此相干,你完全可以建立幾個不同的軟件庫.你要做的只是要重新定義一下環境變量CVSROOT,或者,使用-d 來設置,使用多個軟件庫的好處是,他們可以在不同的sever上,CVS 1.0 版還不能用一條命令來從不同的軟件庫中取出文件,在她以后的版本中,你可以將不同SEVER 上的源碼取到你的工作目錄下. 以下是一個怎樣在多軟件庫下建立工作目錄的例子:

    cvs -d server1:/cvs co dir1

    cd dir1

    cvs -d server2:/root co sdir

    cvs update

    第一條命令建立了一個工作目錄,在sever1上取出了文件第三條命令則在sever2 上的軟件庫中取出了一些文件.然后用所有的文件使sever2 上的文件升級.

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>