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

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

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

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

    LinuxCVS服務器與WinCVS的配置與使用

    發布: 2007-7-04 12:06 | 作者: admin | 來源:  網友評論 | 查看: 27次 | 進入軟件測試論壇討論

    領測軟件測試網
      第一部分 CVS服務器的配置(以1.10版)
      1、 CVS簡述與CVS服務器的安裝:
      CVS是目前比較流行與優秀的版本管理與控制工具,它深受大多數開發人員與系統管理的喜愛,同時也是用來管理其它日常文檔(如word工作文檔之類)的一個強有力的工具。這一部分將對CVS服務器的安裝、配置與使用方法進行簡單、扼要的介紹,以幫助大家盡快的使用CVS來進行一些版本的管理與控制工作。
      
      2、 CVS服務器的安裝
      CVS服務器版可以從網上的很多地方下載到,也可以到CVS的官方網站進行下載。根據你所使用的系統,下載相應的版本,然后進行安裝。因為當前大部分人是在Linux下使用CVS服務器進行版本管理,并且Redhat Linux是目前最流行的一個Linux發行版之一,所以本文將主要基于Redhat Linux進行介紹。首先下載CVS服務器的rpm包,當然也可以下載其它方式的包如源程序包,這也就是Linux的一個優點之一。然后采用以下命令進行安裝:
      rpm -ivh cvs-1.10.8-3.i386.rpm
      
      3、配置/etc/services文件:
      安裝完之后的第一件事就是要配置CVS服務器的配置文件,使其能正常的工作。首先在services文件中添加cvspserver,使其成為Linux的一種服務也就是cvs服務器例程的入口,配置如下:
      cvspserver 2401/tcp # cvs client/server operations
      cvspserver 2401/udp # cvs client/server operations
      
      4、配置xinetd,用xinetd來啟動CVS服務器:
      進入到/etc/xinetd.d/目錄,然后編輯一個文本文件,名字一定要與/etc/services中的入口名字cvspserver一致,所以這里用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,注意:-f
      }
      注意:a、service后面的名稱一定要和你在/etc/service文件中的cvs服務名稱一樣;
      b、env = HOME=這一行的目的就是為了解決在執行一些cvs操作時產生的讀取/root/.cvsignore文件的錯誤,上面env那行的意思就是在運行cvs服務的時候將環境變量HOME置空,這樣雖然執行cvs的用戶是root,但是由于沒有了HOME這個環境變量,所以cvs就不會在去讀取/root/.cvsignore文件了。
      
      5、配置CVS用戶與cvsroot的屬主與屬組:
      首先建立一個用戶組cvs,可以使用groupadd或者addgroup命名,也可以直接編輯/etc/group文件添加這個組,然后添加一個用戶cvsroot, 然后修改/etc/passwd文件使cvsroot用戶的缺省組是cvs組,而不是cvsroot組(也就是修改)。在/home目錄下建立cvsroot目錄(也可以在其它你喜歡的目錄下建),然后修改/home/cvsroot的屬主及屬性:
      #chown cvsroot.cvs /home/cvsroot
      #chmod 771 /home/cvsroot
      
      6、 vs進行初始化:
      安裝完CVS服務器之后的另一件重要的事情就是要初始化CVS服務器的根目錄,以后創建的CVS項目都將建立在這個目錄下,采用的命令如下:
     。vs -d /home/cvsroot init
      這樣目錄/home/cvsroot就成為CVS服務器的根目錄,以后創建的目錄都將默認的存放在這個目錄下。
      
      7、登錄cvs服務器(在Linux或其它Unix系統下進行登錄的情況):
      a、如果是遠程登錄,采用以下語法:
      #cvs -d :pserver:cvsroot@host:/home/cvsroot login
      CVS password://輸入用戶cvsroot的口令;
      如果沒有出現其它的任何提示就表示登錄成功了,否則要根據提示進行相應的修改。 下面對登錄命令的語法進行說明:
      其中,:pserver表示采用pserver方式進行用戶登錄認證,一般的CVS服務器都采用這
      種方式,當然也可以采用其它方式,具體參考相應的資料;
      :cvsroot表示要登錄的用戶名,只要是cvs組的成員都可以,如:cather;
      @host表示要登錄的服務器,可以是DNS名,也可以是IP地址,如:10.104.1.204;
      :/home/cvsroot表示CVS在服務器上的目錄,也可以是其它目錄(由第6中你所
      指定的用來做init初始化的目錄決定);
      提示:也可以把export CVSROOT=:pserver:jchuang@192.168.0.8:/home/cvsroot這一句直
      接寫在用戶的初始化文件中(如:.bash_profile),這樣用戶每次登錄時,只需輸入:
     。vs login
      然后輸入相應的口令就可以登錄到cvs服務器上。
      b、如果是本地登錄,可以直接把export CVSROOT=/home/cvsroot這一句寫在用戶的初
      始化文件如:.bash_profile中;然后直接
      
      8、向CVS添加新的項目模塊
      一般我們都已經有一個或多個項目了,這樣我們可以用下面步驟生成一個新的CVS項目。將一個工程文件置于CVs中進行版本控制,在CVS 術語中稱作導入(import)。從名字上就可以看出,在導入前需要為此作些準備工作。
      輸入操作的基本要求是有個"干凈"的目錄結構。"干凈"的意思是不需要版本控制的文件都被移走了(如編譯生成的文件,備份文件等等)。如果工程已經開始一段時間了,這就顯得很重要。在目錄中也許有些是不打算將其置于版本控制下的文件,但是又想將他們放在這里,這種情況下,你要在輸入之前將它們移走,然后再移回來。
        注意的是CVS 認為空目錄是不存在的。如果想增加一個既不包含文件又不包含子目錄的目錄,需要在其下創建一個啞文件。建議你創建一個名為 README.txt 的文件,其內容為對目錄的簡要說明。
        進入到已有項目的目錄,比如叫 cvstest:
        $cd cvstest
        運行命令將項目文件導入到cvs倉庫中:
        $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start
        說明:import 是cvs的命令之一,表示向cvs倉庫輸入項目文件.
        -m參數后面的字串是描述文本,對項目進行描述,如果不加 -m 參數,那么cvs會自動運行一個編輯器(一般是vi,但是可以通過修改環境變量EDITOR來改成你喜歡用的編輯器)讓你輸入信息,cvstest 是項目名稱(實際上是倉庫名,在CVS服務器上會存儲在以這個名字命名的倉庫里)
        v_0_0_1是這個分支的總標記.沒啥用(或曰不常用)
        start 是每次 import 標識文件的輸入層次的標記,沒啥用。
        這樣我們就在用戶指定進行初始化的目錄/home/cvsroot下建立了一個名字叫cvstest的CVS模塊了,然后,我們可以把這個測試項目的文件刪除,試驗如何從倉庫獲取文件這會在后面的客戶端文章進行說明。
      (注:本小節主要引用自http://linuxaid.com.cn何偉平的“CVS服務器快速指南”)
      
      9、從cvs本地服務器上checkout相應的模塊:
      a、如果是在CVS服務器所在計算機上,可以直接采用如下命令:
      #cvs checkout stw
      這樣將把stw項目模塊checkout到當前目錄下。
      b、如果是在遠程運行Linux或其它Unix系統上,在第7中登錄之后也可以用上邊的命
      令把相應的項目模塊checkout到當前目錄下。
      另外,如果是在windows端進行checkout,可以采用WinCVS,那么還要對WinCVS進行其它的一些配置,下一部分將具體介紹它的配置方法。
      
      第二部分 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…,出現如下界面:
      
      第一、 Authentication:用來配置cvs服務器的認證方式,可以從下拉框中選擇其它的認證方式,不過一般只要選擇默認的pserver方式就可以,要注意的是必須與cvs服務器配置時所指定的認證方式一致;
      第二、 Path:用來配置cvs在服務器上的主目錄路徑,也就是服務器上用進行cvs初始化的目錄,如:/home/cvsroot;
      第三、 Host Address:用來配置cvs服務器所在服務器的地址,可以是IP地址,也可以是DNS名,如:10.104.1.204;
      第四、 User name:用來配置要使用些WinCVS來登錄CVS服務器的用戶名,如:cvsyxwu,用戶的登錄必須由管理員把其添加cvs用戶組中;
      第五、 CVSROOT:此項一般都不需要用戶進行修改,用戶在輸入上邊的幾個選項時,系統將自動根據用戶的輸入生成此項的相應內容。
      b、 全局選項的設置,在上一個界面上選擇“Globals”:
      
      此項的配置主要是要注意這幾選項:
      第一,Checkout read-only不要選上,否則,checkout出來的源代碼將不允許用戶進行
      修改,并且此選項默認是選中的;
      第二,Prune (remove) empty directories也不要選上,否則,會自動刪除空目錄;
      第三,對一般配置沒有特殊要求的,把Dirty files support、Supply control when adding
      與TCP/IP compression選項選中;
      
      4、 登錄服務器:
      選擇Admin->login,將出現如下對話框要求用戶輸入登錄口令
      
      輸入口令后,選擇“OK”按鈕,如果CVS服務器與WinCVS的配置都沒出錯的話,將在CVS的狀態欄中提示:
      cvs -z9 -d :pserver:cvsyxwu@10.104.1.204:/home/cvsroot login
      Logging in to :pserver:cvsyxwu@10.104.1.204:2401/home/cvsroot
      ***** CVS exited normally with code 0 *****
      code 0表示正確的登錄;而如果出錯的話,將是code 1,那么要根據錯誤的提示進行相應的修改。
      
      5、 從CVS服務器上check out相應的模塊:
      第一, 在workspace中的Modules選中要存放checkout模塊的目錄;
      第二, 選擇Create->Checkout Modeles,將出現如下對話框:
      
      其中,Module name and path on the server就是要存放checkout 內容的目錄,由用戶輸入;而Local folder to checkout to就是第一中用戶所選擇的目錄。
      
      6、 修改之后把文件提交到CVS服務器
      a)、只有一個用戶對文件進行修改的情況
      用自己喜歡的編輯器對checkout出來的文件進行修改,修改之后的文件在沒有提交之前會是紅色的,如下圖example.h文件:
      選中紅色的文件example.h后右擊選擇“Commit Selection”選項,如果沒有其它用戶也對其進行修改并已經提交到CVS服務器上,一切正常的話將把example.h文件提交到CVS服務器并把圖標恢復成原來的顏色。
      b)、兩個或兩個以上的用戶對同一文件的不同部分進行修改的情況
      這種情況就是如用戶A與用戶B都checkout了文件example.h,內容如下:
      int callby (int count)
      {
      printf("ExcelStor!\n");
      }
      void main(int argv,char *argc)
      {
      //added by my cvs
      printf("I am Cather\n");
      }
      int mainexample()
      {
      printf("OK\n");
      }
      然后用戶A修改成如下,并提交到CVS服務器(一般將正常提交):
      int callby (int count)
      {//add
      printf("ExcelStor!\n");
      }
      void main(int argv,char *argc)
      {
      //added by my cvs
      printf("I am Cather\n");
      }
      int mainexample()
      {//add
      printf("OK\n");
      }
      接著用戶B修改成如下:
      int callby (int count)
      {//add
      printf("ExcelStor!\n");
      }
      void main(int argv,char *argc)
      {
      //modified
      printf("I am Cather\n");
      }
      int mainexample()
      {//add
      printf("OK\n");
      }
      當用戶B選擇“Commit Selection”時將提示:
      cvs server: Up-to-date check failed for `example.h'
      cvs [server aborted]: correct above errors first!
      此時表明已經有用戶對同一個文件example.h進行修改并提交到CVS服務器,這時要先選擇“Update Selection”對本地example.h與CVS服務器上的example.h文件進行同步與合并,不用選中出現的任何選項,直接選擇“OK”,這時將顯示如下:
      cvs -z9 update example.h (in directory C:\my cvs\STW\src\)
      RCS file: /home/cvsroot/STW/src/example.h,v
      retrieving revision 1.5
      retrieving revision 1.6
      Merging differences between 1.5 and 1.6 into example.h
      M example.h
      
      ***** CVS exited normally with code 0 *****
      表明用戶B與用戶A的修改已經合并成功,同時文件example.h的圖標也將變成紅色,合并后的文件是存放在用戶B的本地機上,為了更新到CVS服務器還必須選中example.h并右擊選擇“Commit Selection”才能把用戶A與用戶B的修改合并后的結果提交到CVS服務器上。注:M表示此文件已經被修改過。
      c)、兩個或兩個以上的用戶對同一個文件的相同部分進行修改的情況
      這種情況就是如用戶A與用戶B都下載了文件example.h,內容如下:
      void main(int argv,char *argc)
      {
      printf("I am Cather\n");
      }
      然后用戶A把文件修改成如下,并提交到CVS服務器(一般將正常提交):
      void main(int argv,char *argc)
      {
      printf("I am Cather\n");
      printf("I am Pat\n");
      }
      接著用戶B又把文件修改成如下:
      void main(int argv,char *argc)
      {
      printf("I am Cather\n");
      printf("I love you Cather\n");
      }
      如果用戶B這時選擇“Commit Selection”準備把修改結果提交到CVS服務器,此時將顯示如下的錯誤提示:
      cvs -z9 commit -m "update in 11:20" example.h (in directory C:\my cvs\STW\src\)
      cvs server: Up-to-date check failed for `example.h'
      cvs [server aborted]: correct above errors first!
      
      ***** CVS exited normally with code 1 *****
      表明用戶B的修改與其它用戶的修改沖突,這時要先選擇“Update Selection”,將顯示如下提示:
      cvs -z9 update example.h (in directory C:\my cvs\STW\src\)
      RCS file: /home/cvsroot/STW/src/example.h,v
      retrieving revision 1.9
      retrieving revision 1.10
      Merging differences between 1.9 and 1.10 into example.h
      rcsmerge: warning: conflicts during merge
      cvs server: conflicts found in example.h
      C example.h
      
      ***** CVS exited normally with code 0 *****
      example.h前面的C表示與其它用戶的修改有沖突,并且文件的圖標會加顯示一個“C”,如下所示:
      
      雙擊example.h將顯示example.h的內容,如下:
      void main(int argv,char *argc)
      {
      printf("I am Yanxi\n");
      printf("I am Cather\n");
      <<<<<<< example.h
      printf("I love you Yanxi,too!\n"); //這部分為你的修改
      =======
      printf("I love you Cather!\n"); //這部分為其它用戶的修改
      >>>>>>> 1.10
      }
      這時你應該與用戶A進行協商以決定最終要怎樣修改。比如,可以修改成:
      void main(int argv,char *argc)
      {
      printf("I am Yanxi\n");
      printf("I am Cather\n");
      printf("I love you Yanxi,too!\n"); //這部分為你的修改
      printf("I love you Cather!\n"); //這部分為其它用戶的修改
      }
      然后選擇“Commit Selection”進行提交,將顯示如下的提示信息:
      cvs -z9 commit -m "update in 11:20" example.h (in directory C:\my cvs\STW\src\)
      Checking in example.h;
      /home/cvsroot/STW/src/example.h,v <-- example.h
      new revision: 1.11; previous revision: 1.10
      done
      
      ***** CVS exited normally with code 0 *****
      表明用戶A與用戶的修改已經合并成功。
      
      這樣,向CVS服務器提交文件所會遇到的問題也基本上就是這些,用戶要根據所遇到的實際問題進行修改。
      
      7、 向CVS服務器添加新文件
      在本地添加文件后,要提交到服務端。先選中文件,然后點擊“添加按鈕”,添加文件后,再在右鍵菜單中選擇提交命令“Commit Selection”即可。
      
      如圖,選中文件example.h.bak,因為example.h.bak當前不是CVS的文件,此時“添加按鈕”將由不可選狀態變成可選狀態,所以Status中顯示為“NonCvs file”,選擇“添加按鈕”之后example.h.bak圖標將變成紅色并增加了一個A字母,如下:
      
      然后選中example.h.bak,右擊,選擇“Commit Selection”把文件example.h.bak提交到CVS服務器上而成為CVS的一個文件。
      
      8、 結束語
      來到這里,你基本上已經能為自己或公司配置一個實用的CVS服務器與WinCVS客戶端,配合使用CVS進行系統開發或其它文檔的版本管理與控制。

    延伸閱讀

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


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