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

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

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

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

    CVS使用探討

    發布: 2007-6-22 15:48 | 作者:   | 來源:   | 查看: 16次 | 進入軟件測試論壇討論

    領測軟件測試網

       
      作者: lhl
      
      假設:
      cvsroot user:cvsroot home=/home2/cvsroot/cvsroot
      cvs group:cvs
      
      1:安全
      
      #groupadd cvs
      #mkdir /home2/cvsroot#注意:/home2/cvsroot為root所有

      #useradd -g cvs -G cvs -d /home2/cvsroot/cvsroot cvsroot
      
      /***未經實驗**/
      #mv /usr/bin/cvs /usr/bin/cvs.real
      #cat > /usr/bin/cvs
      #!/bin/sh
      umask 2# Or whatever your site standard is.
      exec /usr/bin/cvs.real ${1+"$@"}
      ^D
      /*************/
      
      2:多倉庫
      
      注意,我們用cvsroot僅僅是用來管理,所以,不要在它$HOME下面創建任何倉庫
      另外,cvsroot用戶的初始環境不應該包含非空的$CVSROOT.
      使用cvsroot來進行的任何管理工作都指明CVSROOT是一個好的習慣.
      
      OK,開始給單個項目建倉庫
      
      假設有兩個項目,project1,project2,希望單獨存放,便于管理
      
      #mkdir /home2/cvsroot/pro1
      #mkdir /home2/cvsroot/pro2
      #chown cvsroot.cvs /home2/cvsroot/pro1
      #chown cvsroot.cvs /home2/cvsroot/pro2
      #chmod 2775 /home2/cvsroot/pro1
      #chmod 2775 /home2/cvsroot/pro2
      (更高的安全要求則$chmod 2770 /home2/cvsroot/cvsroot/pro1)
      
      OK,開始建立倉庫
      
      #su - cvsroot
      $cvs -d /home2/cvsroot/pro1 init
      $cvs -d /home2/cvsroot/pro2 init
      $chmod 2775 /home2/cvsroot/pro1
      $chmod 2775 /home2/cvsroot/pro2
      
      修改啟動文件
      
      service cvspserver
      {
      disable = no
      flags= REUSE
      socket_type= stream
      wait= no
      user= root
      bind= 192.168.0.1
      only_from= 192.168.0.0/24
      server= /usr/bin/cvs
      server_args= -f --allow-root=/home2/cvsroot/pro1 --allow-root=/home2/cvsroot/pro2 pserver
      log_on_failure += USERID
      }
      
      /********技巧*************/
      
      由于x.netd的server_args長度限制,當你想運行很多的單個倉庫的時候,可以這么做,
      
      #vi /etc/xinetd.d/cvspserver
      service cvspserver
      {
      disable= no
      flags= REUSE
      socket_type= stream
      wait= no
      user= root
      bind= 192.168.0.1
      only_from= 192.168.0.1.0/24
      server= /home2/cvsroot/cvs.run
      log_on_failure += USERID
      }
      
      :wq
      
      然后寫腳本/home2/cvsroot/cvs.run
      
      #vi /home2/cvsroot/cvs.run
      #!/bin/bash
      /usr/bin/cvs -f \
      --allow-root=/home2/cvsroot/pro1 \
      --allow-root=/home2/cvsroot/pro2 \
      --allow-root=/home2/cvsroot/pro3 \
      --allow-root=/home2/cvsroot/pro4 \
      --allow-root=/home2/cvsroot/pro5 \
      --allow-root=/home2/cvsroot/pro6 \
      pserver
      
      :wq
      
      #chmod +x /home2/cvsroot/cvs.run
      
      #service xinetd restart
      
      OK!
      
      /*************************/
      
      修改不同倉庫的策略
      
      #su - cvsroot
      
      $export CVSROOT=/home2/cvsroot/pro1
      $cvs co CVSROOT
      $cd CVSROOT
      $vi config
      # Set this to "no" if pserver shouldn't check system users/passwords
      SystemAuth=no
      
      # Put CVS lock files in this directory rather than directly in the repository.
      LockDir=/var/cache/cvs/pro1
      
      # Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
      # level of the new working directory when using the `cvs checkout'
      # command.
      #TopLevelAdmin=no
      
      # Set `LogHistory' to `all' or `TOFEWGCMAR' to log all transactions to the
      # history file, or a subset as needed (ie `TMAR' logs all write operations)
      LogHistory=TOFEWGCMAR
      
      :wq
      
      $vi loginfo
      ALL (echo %{sVv}; cat) | /usr/local/viewcvs-0.9.2/loginfo-handler#SQL checkin
      
      :wq
      
      $cvs commit -m "auth change,log change"
      
      OK,既然不使用系統用戶驗證,那么我們來創建用戶
      /************/
      
      不使用系統帳號的原因是充分保證安全,避免系統帳號直接刪除倉庫里的文件.
      雖然麻煩,但是很有必要,因為無法保證每一個程序員都對cvs操作很有經驗.
      
      在這種情況下,為每一個工程各建一個等效系統用戶,此用戶應該是cvs組的成員.
      不必有shell.
      (也可以為所有的項目建一個等效用戶,私有的cvs Server完全可以這么做,甚至可以
      直接使用cvsroot,呵呵,就是比較危險而已)
      
      #adduser -g cvs -G cvs -s /bin/false -d /home2/cvsroot/pro1 -M cvspro1
      
      /************/
      
      創建一個LockDir(選擇/var/cache是因為某些系統放在/var/lock下面有問題)
      #mkdir /var/cache/cvs
      #chown cvsroot.cvs /var/cache/cvs
      #chmod 2775 /var/cache/cvs
      
      #mkdir /var/cache/cvs/pro1
      #chown cvspro1.cvs /var/cache/cvs/pro1
      #chmod 2775 /var/cache/cvs/pro1
      
      創建用戶
      
      先清除環境
      $export CVSROOT=
      $cd ~cvsroot
      $rm -rf CVSROOT
      
      直接切換到pro1的倉庫下
      
      $cd /home2/cvsroot/pro1
      $cd CVSROOT
      
      
      創建用戶hleil
      
      $htpasswd -c passwd hleil
      
      修改passwd成cvs的格式
      
      $vi passwd
      hleil:svcsdasdcvjn:cvspro1
      
      :wq
      
      加入writers組
      
      $echo hleil >>writers
      
      /*****這里有一個問題**********/
      
      如果用戶hleil需要writers權限,那么,他絕對不可以出現在readers組中.
      writers,readers,passwd的文件尾空行是必要的.
      等效系統帳號如果不存在,將導致access failed.
      cvs帳號盡量沒有對應的系統帳號,如果有,確保它們的passwd不同.
      
      /******************************/
      
      OK了!
      
      項目pro2同理.
      
      
      3:夠建模塊化的工程
      
      關于模塊化,大家掛在口邊也不是一天兩天了,這里指的是項目的模塊化,不是指具體的程序.
      
      正常的項目開始具體實施之前,必定做好了系統分析和結構設計,當然,像打印"Hello World!"
      這樣的"項目"或許不用進行系統分析吧:P,所以也不用麻煩我們辛苦構建的cvs.
      
      軟件設計完成之后,各個模塊應該也就出來了,在實施之前,我們需要考慮用cvs貫徹設計結果.
      
      cvs的模塊不必細化到瘋狂的程度,大致按照功能劃分并且兼顧工作組就可以了.同一模塊必需
      僅有單一工作組負責.
      
      確定模塊之后,我們來建立模塊.
      
      #su - hleil
      $export CVSROOT=:pserver:hleil@192.168.0.1:/home2/cvsroot/pro1
      $cvs login
      $cvs co CVSROOT
      
      假設有這樣的目錄結構,
      pro01
      libs
      libs/01
      libs/02
      每個目錄下面都有一個初始化文件init(方便import)
      
      我們可以這樣定義modules,
      
      $vi CVSROOT/modules
      pro01pro01 & libs
      libs-01-d 01libs/01
      libs-02 -d 02libs/02
      libs-a libs-01 libs-02
      
      :wq
      
      $cvs commit -m "init modules"
      
      倒入目錄結構,
      
      $cvs import -m "init checkin" pro01 init start
      
      現在,你的三個小組可以分別工作于pro01,libs-01,libs-02,全部程序只要co pro01就行了.
      
      簡單吧:P
      
      4:克隆
      
      構建模塊
      
      $export CVSROOT=remote
      $cvs login
      $cvs co CVSROOT/modules
      $cvs logout
      $mv CVSROOT/modules .
      $rm -rf CVSROOT
      $export CVSROOT=local
      $cvs login
      $cvs co CVSROOT/modules
      $cp modules CVSROOT/modules
      $cvs commit -m "clone init modules"
      
      研究目錄結構
      所有的 -a 定義的模塊不需要checkout
      $sed "/#/d" modules > modules.tmp
      $sed "/^$/d" modules.tmp > modules.tmp2
      $sed s/" "*/" "/g modules.tmp2 > modules.tmp
      $cat modules.tmp|sed /-a/d >mymodules
      
      仔細研究目錄結構,以便co不含有垃圾的代碼
      
      $cp mymodules co-list
      
      編輯co-list,不需要的注釋,OK
      
      $sed "/#/d" co-list > co-list.tmp
      $cut -d " " -f 1 co-list.tmp >co-list
      
      OK,此時

    文章來源于領測軟件測試網 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>