• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > CVS完全手冊(二)

    CVS完全手冊(二)

    ——
    作者: 時間:2007-04-05 來源: 收藏

    分支管理
    =============================
    可以將歷史劃分成多個獨立,并行和互不影響的分支,并去修改歷史
    1 標定里程碑
    ------------------------------------
    cvs tag release_1_0 prj_dir_name

    2 開始一個新的里程碑:
    ------------------------------------
    cvs commit -r 2
    標記所有文件開始進入2.x的開發
    注意:里的revsion和軟件包的發布版本可以沒有直接的關系。但所有文件使用和發布版本一致的版本號比較有助于維護。

    3 建立分支
    ------------------------------------
    在開發項目的2.x版本的時候發現1.x有問題,但2.x又不敢用,則從先前標記的里程碑:release_1_0導出一個分支release_1_0_b2
    cvs rtag -b -r release_1_0 release_1_0_bugfixes prj_dir_name
    -r修飾的是release_1_0,-b 修飾的是release_1_0_bugfixes,cvs的版本號將變為4位,以后每分一次支,版本號增加2位

    4 分支并行開發
    ------------------------------------
    一些人先在另外一個目錄下導出release_1_0_bugfixes這個分支:解決1.0中的緊急問題,
    cvs checkout -r release_1_0_bugfixes
    分支是可以修改的,并自動提交到分支上去
    而其他人員仍舊在項目的主干分支2.x上開發

    5 tag分支
    ------------------------------------
    在release_1_0_bugfixes上修正錯誤后,標記一個1.0的錯誤修正版本號
    cvs tag release_1_0_bugfixes_p1

    6 合并分支
    ------------------------------------
    如果2.0認為這些錯誤修改在2.0里也需要,也可以在2.0的開發目錄下合并release_1_0_patch_1中的修改到當前代碼中:
    cvs update -j release_1_0_bugfixes

    7 再次合并分支
    ------------------------------------
    如果又發現1.x新的bug,我在分支已經修改了,并標定了release_1_0_patch_2,我們同樣希望把它合并到主干上來
    cvs update -j release_1_0_bugfixes_p1 -j release_1_0_bugfixes
    它的意思是把release_1_0_bugfixes_p1(tag)到release_1_0_bugfixes(分支)變化了的部分合并到當前文件(主干)
    否則用6步的方法,則以前合并的內容會重新合并
    注意:此時我們使用第5步的結果
    教訓:盡早頻繁的tag,但同時不能導致tag泛濫,tag在不同的分支里可以同名

    8 鎖定分支
    ------------------------------------
    cvs admin -l r_0_2 鎖定r_0_2分支
    cvs admin -l    鎖定主分支

    9 設置缺省分支
    ------------------------------------
    cvs admin -b r_0_2 設定r_0_2為缺省分支
    cvs admin -b    設定主分支

    10 刪除歷史記錄
      如果歷史文件過多,或確定有幾個階段的穩定版本,我們可以刪除一些歷史文件,以保證cvs的性能
    cvs admin -o rev1:rev2 filename 刪除rev1到rev2的版本,含這兩個版本
    cvs admin -o rev1::rev2 filename 刪除rev1到rev2的版本,不含這兩個版本
    如果省略rev1,表示刪除本分支rev2之前的所有版本
    如果省略rev2,表示刪除本分支rev1之后的所有版本
    cvs admin -o rev filename 刪除rev這個版本的文件
    注意:有tag的版本不能被刪除,所以tag很重要,而且只能刪單個文件


    CVS服務器的安裝和配置
    =============================
    1 下載源碼
    ------------------------------------
      可從很多地方下載cvs,也可從官方ftp://ftp.gnu.org/gnu/cvs/下載

    2 安裝,同很多源碼安裝一樣
    ------------------------------------
      gunzip cvs-1.10.6.tar.gz
      tar xvf cvs-1.10.6.tar
      cd cvs-1.10.6
      ./configure
      make
      make install

    3 包的安裝,如果找到具體操作系統的安裝包,則見此操作系統的使用說明,比如linux為
    ------------------------------------
      rpm -ivh cvs-1.10.8-3.i386.rpm即可

    4 建立Repository
    ------------------------------------
      groupadd cvs(要訪問cvs的用戶加入此組)
      useradd cvsroot
      mkdir /home/cvsroot
      cvs -d /home/cvsroot init
      chown -R cvsroot.cvs /home/cvsroot
      chmod -R ug+rwx /homecvsroot

    5 配置/etc/services文件
    ------------------------------------
     添加cvspserver,如果有就不要加了
    cvspserver 2401/tcp # cvs client/server operations
    cvspserver 2401/udp # cvs client/server operations

    6 配置inetd
    ------------------------------------
      編輯/etc/inetd.conf,加入
    cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
      如果使用tcpwrappers
    cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/bin/cvs --allow-root=/usr/local/newrepos pserver
      如果使用xinetd,編輯/etc/xinetd.d/cvspserver
      service cvspserver
     {
    disable = no
    socket_type = stream
    wait = no
    user = root
    env = HOME=
    server = /usr/bin/cvs
    server_args = -f --allow-root=/home/cvsroot pserver
      }
    pserver表示是口令認證,如果要用ssh方式則應該是server
    --allow-root是Repository的目錄,可以有多個此選項來建立多個Repository

    7 驗證配置成功
      cvs login看時候能成功登錄,有幾個可能失敗的地方
      用戶是否屬于cvs組和目錄權限
      inetd是否正常配置和啟動,--allow-root是否寫對
    8 導入項目
      把你的所有項目文件放入prj_dir
      cd prj_dir
     cvs import -m "this is a cvstest project" prj_dir v_0_0_1 start
      v_0_0_1是這個分支的總標記.沒啥用(或曰不常用)
     start 是每次 import 標識文件的輸入層次的標記,沒啥用。


    Watchers
    =============================
    cvs提供了watch的功能,來幫助大家了解誰在干什么,誰在對文件做什么操作,它發email通知,以協調大家的工作。
    1 開啟watch功能
      在CVSROOT/notify文件中加入下面行
      ALL mail %s -s "CVS notification"
    2 設定外部email地址
      缺省是把通知信息發給本機的email,要發給別的地址,在CVSROOT/users加入如下內容
      hwz:kerlion@netease.com
    3 watch文件的修改
      cvs watch add filename
      cvs watch remove filename
    4 watch文件的修改
      watch功能是個大家協調的功能,大家必須按一個統一的工作流程來做,如果不cvs edit,cvs沒有辦法通知修改情況
      cvs edit filename
      修改文件
      cvs unedit filename
    5 提醒大家使用watch功能
      cvs沒有強制使用watch的功能,只有這個功能在用戶提交完后自動把文件變為只讀的,再使用cvs edit filename就可以修改它了
      cvs watch on
    6 查看那人人再watch
      cvs watchers


    WinCVS的安裝和配置
    =============================
    1、WinCVS簡介:
    WinCVS是CVS的一個客戶端軟件,它運行在Windows上,用來在Windows上登錄CVS服務器,然后進行一些CVS相關的操作與管理。由于當前很多的企業內部都采用Linux/Unix做服務器,而用Windows做客戶端,所以,WinCVS與CVS服務器配合使用將組成最強有力的版本控制與管理的系統之一。
    2、WinCVS的下載與安裝;
      最新的WinCVS可以從http://sourceforge.net/project/showfiles.php?group_id= 10072地址下載到,也可以在http://sourceforge.net/project 上下載到最新的或其它版本的WinCVS。
      下載到相應的版本后根據向導進行安裝,已經要使用CVS的用戶,安裝這個WinCVS應該沒什么問題吧!
    3、配置WinCVS:
    a、Admin->;Preferences…/general
       CVSROOT 按cvsroot格式填寫
       Authentication:用來配置cvs服務器的認證方式一般只要選擇默認的pserver方式就可以
           要注意的是必須與cvs服務器配置時所指定的認證方式一致
                       如果要用ssh server,確認在windows中安裝了openssl,openssh
    a、Admin->;Preferences…/Globals
      此項的配置主要是要注意這幾選項:
      Checkout read-only:默認是選中的,建議不要修改,只是修改文件前需要先edit selection,提交后又自動變為只讀
                   這樣有兩個好處:
                    一個是可以通過unedit selection來undo你做的修改
                    二是可以符合watch功能的使用規范
      Prune empty directories: 不要選上,否則,會自動刪除空目錄;
    4、登錄服務器:
       選擇Admin->;login,將出現如下對話框要求用戶輸入登錄口令
       wincvs中命令的exit code 0表示正確執行,否則是失敗,一般成功顯示為
       *****CVS exited normally with code 0*****
    5、winCVS的使用都有菜單,大家熟悉cvs的使用的話,用起來是很容易的,我就不多說了


    CVSWEB的安裝
    =============================
    CVSWEB就是CVS的WEB界面,可以大大提高程序員定位修改的效率:
    使用的樣例可以看:http://www.freebsd.org/cgi/cvsweb.cgi

    CVSWEB的下載:CVSWEB從最初的版本已經演化出很多功能界面更豐富的版本,這個是個人感覺覺得安裝設置比較方便的:
    http://www.spaghetti-code.de/software/linux/cvsweb/

    1 下載解包:
    tar zxf cvsweb.tgz

    2 把配置文件cvsweb.conf復制到apache的配置目錄下
     cp cvsweb.conf /path/to/apache/conf
    轉到/path/to/apache/conf下并修改cvsweb.conf:
    修改CVSROOT路徑設置:
    %CVSROOT = (
    'Development' =>; '/path/to/cvsroot/dev', #<==修改指向本地的CVSROOT
    'test' =>; '/path/to/cvsroot/test', #<==修改指向本地的CVSROOT
    );
    如果有多個cvsroot,這定缺省的cvsroot
    $cvstreedefault = 'test';

    3 其它個性化設置
     cvsweb.conf還有許多其它個性化設置,常見的有這些變量:
     $logo 圖標設置
     $defaulttitle 標題設施
     $address 管理員email地址設置
     $long_intro 介紹文字
     $short_instruction  說明文字

    4 把文件cvsweb.cgi復制到apache的cgi目錄
     cp cvsweb.cgi /path/to/apache/cgi-bin
     轉到/path/to/apache/cgi-bin修改cvsweb.cgi
    修改cvsweb.cgi讓CGI找到配置文件:
    $config = $ENV{'CVSWEB_CONFIG'} || '/path/to/apache/conf/cvsweb.conf';

    5 中文支持
     讓cvsweb正確顯示中文,找到sub html_header($)函數,
     然后在<html>;和<title>;之間插入一行,修改如下
     <html>;
     <meta http-equiv="Content-Type" content="text/html; charset=gb2312">;
     <title>;$title</title>;
    6 復制所有的gif,png文件到apache的icons目錄
    7 增加訪問控制
    CVSWEB可不能隨便開放給所有用戶,因此需要使用WEB用戶認證:
    先生成 passwd:
    /path/to/apache/bin/htpasswd -c cvsweb.passwd user

    修改httpd.conf: 增加
    <Directory "/path/to/apache/cgi-bin/cvsweb/">;
    AuthName "CVS Authorization"
    AuthType Basic
    AuthUserFile /path/to/cvsweb.passwd
    require valid-user
    </Directory>;

     

    ==========================================================================
    參考文檔:
    CVS的常用命令速查手冊,車東,chedong@bigfoot.com
    CVS服務器與WinCVS的配置與使用,吳炎溪,Yanxi-Wu@21cn.com
    CVS速成班,作者不祥
    cvs book,Karl Fogel,kfogel@red-bean.com



    關鍵詞: CVS

    評論


    技術專區

    關閉
    主站蜘蛛池模板: 广宁县| 元阳县| 伊宁市| 常宁市| 大同市| 丹凤县| 恩平市| 苏州市| 杂多县| 松原市| 渝北区| 红安县| 泾源县| 五原县| 昌江| 甘谷县| 福泉市| 清涧县| 丰镇市| 怀安县| 和政县| 五河县| 金平| 桐梓县| 宁明县| 出国| 东乡县| 濮阳县| 绵竹市| 江都市| 光泽县| 阳朔县| 安化县| 万全县| 延长县| 新泰市| 邹平县| 河源市| 湾仔区| 准格尔旗| 汉中市|