亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > cvs
使用CVS進(jìn)行項(xiàng)目開發(fā)管理
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/2/17 16:40:52 ] 推薦標(biāo)簽:

  在多人共同開發(fā)一個(gè)大型項(xiàng)目時(shí),源代碼的維護(hù)和版本維護(hù)是一件令人頭疼的事情,由于多人開發(fā),每個(gè)開發(fā)人員都擁有此項(xiàng)目的副本,所以如果要手動維護(hù)同一個(gè)文件多人的修改是十分困難的事情。
  另外,可能你需要的項(xiàng)目的版本不是當(dāng)前開發(fā)的新的版本, 如果為了這個(gè)目的而為每一個(gè)版本保留一個(gè)備份幾乎是不可能的。Linux平臺上提供了一個(gè)功能軟件:CVS。眾所周知,Linux的發(fā)展得益于互聯(lián)網(wǎng)的發(fā)展,大部分的軟件都是眾多開發(fā)者在互聯(lián)網(wǎng)上共同開發(fā)的,這些軟件的維護(hù)大部分都使用CVS,例如Deban Linux的開發(fā)、KDE的開發(fā),以及sourceforg上的開發(fā)項(xiàng)目。正確熟練使用CVS是一個(gè)Linux程序員基本的素質(zhì)。
  
  CVS不僅可以維護(hù)源代碼,事實(shí)上,所有的文本文件都可以使用CVS來管理,當(dāng)然也可以管理 二進(jìn)制文件,只是需要特殊的命令選項(xiàng)罷了。
  
  CVS把文件保存在一個(gè)名叫倉庫(repository)的地方,倉庫中保存的文件并不是每個(gè)版本的副本,而是可以從任意版本回溯到初始版本的一些代碼的主控信息,這樣,節(jié)省了大量的存儲空間。
  倉庫不僅可以建立在本機(jī)上,也可以建立在網(wǎng)絡(luò)上。另外CVS支持版本分支(tag),這樣可以從任意的版本中衍生出另外一個(gè)版本進(jìn)行開發(fā),必要時(shí),還可以把這個(gè)分支合并到主開發(fā)分支去。
  
  CVS需要一個(gè)名叫RCS(修訂控制系統(tǒng))的軟件,確切說,CVS主要管理開發(fā)項(xiàng)目中的目錄的改動,而RCS則側(cè)重于管理的一個(gè)文件的改變。如果要使用網(wǎng)絡(luò)的CVS,還需要rsh或者自己內(nèi)置的cvs-server,rsh是CVS客戶于服務(wù)器的通信平臺,如果需要安全的信息傳輸,可以使用ssh,這個(gè)可以使用CVS_RSH環(huán)境變量來指定:
  export CVS_RSH=rsh 使用rsh
  export CVS_RSH=ssh 使用ssh
  
  RCS使用
  在使用CVS之前,先介紹一下RCS的使用方法。
  正如前面所說,RCS是針對某一個(gè)特定的文件進(jìn)行管理,常用到的命令是co和ci。RCS使用當(dāng) 前工作路徑下的RCS目錄來存儲管理的文件。
  ci (check in)把源代碼加入到RCS源代碼倉庫中,每一個(gè)添加進(jìn)代碼庫中的文件的版本是 1.1。
  以后每次修改文件重新ci以后,此文件的版本遞增為1.2 ,1.3.……。
  co(check out)把源文件從RCS源代碼倉庫中取出,缺省的版本是新的版本,如果你需要一個(gè)指定的版本,則需要使用-r選項(xiàng)指定。例如:
  $mkdir RCS 建立RCS源代碼倉庫
  編輯一個(gè)文件,如hello.c
  #include <stdio.h>
  int main (void)
  {
  printf ("Hello World ");
  return 0;
  }
  然后把它加入到RCS倉庫中:
  [kerberos@power zhyf]$ ci hello.c
  RCS/hello.c,v <-- hello.c
  enter description, terminated with single '.' or end of file:
  NOTE: This is NOT the log message!
  >>the inital verion. 輸入關(guān)于文件改動的信息
  >> . 以.結(jié)束信息輸入
  initial revision: 1.1 初始版本是1.1
  done
  [kerberos@power zhyf]$
  當(dāng)文件加入到源代碼倉庫后,RCS會自動刪除文件。
  
  如果需要修改文件,則從倉庫取出:
  [kerberos@power zhyf]$ co hello.c
  RCS/hello.c,v --> hello.c
  revision 1.1
  done
  此時(shí),取出的文件是只讀的,如果需要編輯文件,需要對文件加鎖取出,防止與他人編輯沖突。 
  加鎖取出使用-l (lock)選項(xiàng)。
  [kerberos@power zhyf]$ co -l hello.c
  RCS/hello.c,v --> hello.c 從RCS倉庫中取出hello.c,倉庫中的文件是以v結(jié)尾的。
  revision 1.1 (locked) 指明是加鎖取出
  done
  這時(shí),我們可以修改和編輯文件了。
  例如:
  #include <stdio.h>
  int main (void)
  {
  printf ("Hello World ");
  printf("checkoutwithlock "); 添入代碼
  return 0;
  }
  [kerberos@power zhyf]$ ci hello.c
  RCS/hello.c,v <-- hello.c
  new revision: 1.2; previous revision: 1.1 重新加入到倉庫,文件版本遞增為1.2
  enter log message, terminated with single '.' or end of file:
  >> check out with lock and modified it .
  >> .
  done
  如果你需要先前的hello.c,也是1.1版本的,可以使用-r來指定取出文件的版本:
  [kerberos@power zhyf]$ co -l -r1.1 hello.c
  hello.c,v --> hello.c
  revision 1.1 (locked) 取出1.1版本
  done
  可以嘗試使用兩次加鎖取出,這時(shí)候,RCS會提示警告信息。
  [kerberos@power zhyf]$ co -l hello.c
  hello.c,v --> hello.c
  revision 1.1 (locked)
  writable hello.c exists; remove it? [ny](n) 是否覆蓋當(dāng)前的hello.c
  如果回答n,則取出失敗,回答是則覆蓋當(dāng)前文件與-l相反的選項(xiàng)是-u,取出不加鎖的文件用于工作。-f則在ci時(shí)強(qiáng)制覆蓋RCS倉庫中的文件,在co時(shí)強(qiáng)制覆蓋當(dāng)前的文件。 
  
  在RCS中,支持類似于宏的關(guān)鍵字,在ci后,這些關(guān)鍵字會被RCS替換成特定的信息,如$Id$關(guān)鍵字:
  /*$Id
  */
  #include <stdio.h>
  int main (void)
  {
  printf ("Hello World ");
  printf("checkoutwithlock ");
  return 0;
  }
  ci 之后,然后取出,文件將變成:
  /*$Id: hello.c,v 1.3 2001/02/22 16:16:58 kerberos Exp kerberos $
  */
  #include <stdio.h>
  int main (void)
  {
  printf ("Hello World ");
  printf ("check out with lock ");
  return 0;
  }
  $Id$ 關(guān)鍵字是用文件名、版本、時(shí)間、作者 及代碼性質(zhì)替換,如果使用-l選項(xiàng)取出,在Exp后面會加上登錄用戶的名稱。除了$Id$關(guān)鍵字,RCS還支持下面常用的關(guān)鍵字:
  $Log$ : 你所提供的修改日志信息。
  $Author$ :存入該版本的作者。
  $Locker$ : 該版本的加鎖者
  $State$ : 該版本的狀態(tài) Exp(試驗(yàn)版), Stabe(穩(wěn)定版), Rel(發(fā)行版).缺省是Exp
  $Date$ : 該版本存入的時(shí)間,使用UTC時(shí)間格式。
  $Revision$ : 該版本的版本號
  $RCSfile$ : RCS文件名
  $Source$ : RCS全路徑名
  $Name$ : 取回該版本的符號名
  $Header$ : 相當(dāng)于$ Source $$ Revision$$Date$$Author $$State$$Locker$的組合在UNIX/Linux下有一個(gè)diff工具可以比較兩個(gè)文件的不同,rcsdiff可以在不同的版本之間比較文件的不同,而不必取出文件,如:
  rcsdiff hello.c 比較當(dāng)前hello.c文件與RCS倉庫中新版本的區(qū)別。
  rcsdiff -r1.1 hello.c 比較當(dāng)前hello.c文件與hello.c的1.1版本的區(qū)別。
  rcsdiff -r1.2 -r1.1 比較hello.c 文件的1.1版本和1.2版本的區(qū)別。
  使用這個(gè)命令,可以很方便的做出任意版本之間的補(bǔ)丁文件。
  另外,還有其他一些不常用的RCS命令,讀者可以參考更詳細(xì)的資料。

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 老湿机福利影院 | 看真人视频一一级毛片 | 中文字幕 亚洲 一区二区三区 | 一级毛片视频免费观看 | 亚洲国产精品一区二区久 | 野花影视视频在线观看免费 | 欧美日韩精品在线观看 | 免费的a级毛片 | 日韩字幕一中文在线综合 | 国产精品欧美一区二区三区 | 久久成人小视频 | 久久综合九色综合97_ 久久久 | 国产视频久 | 一区二区三区免费在线观看 | 欧美一区二区激情三区 | 天天干在线影院 | 91成年人免费视频 | 欧美视频一区在线观看 | 亚洲va精品中文字幕 | 一级毛片免费视频网站 | 最近最好看2019年中文字幕 | 一个人的视频www片免费 | 成人黄色大全 | 欧洲成人免费高清视频 | 插曲的痛一卡二卡三卡 | 特级毛片www俄罗斯免 | 欧美成人性色xxxxx视频大 | 精品欧美一区视频在线观看 | 成人永久免费 | 丁香六月 久久久 | 成年人在线免费观看视频网站 | 免费视频网站在线观看黄 | 日本视频一区二区 | 伊人网大香 | videoxxoo欧美老师 | 日本人成年视频在线观看 | 亚洲国产午夜 | sss在线观看| 丝袜调教视频 | 国产精品嫩草影院在线观看免费 | 97欧美精品激情在线观看最新 |