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

您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > cvs
配置管理工具CVS簡單教程
作者:網絡轉載 發布時間:[ 2012/12/4 16:57:47 ] 推薦標簽:

一把,這時候我會看到:

==================================================================
File: ceo.c             Status: Needing Patch

   Working revision:    1.1.1.1 'Some Date'
   Repository revision: 1.2     /home/cvsroot/nastaq/ceo.c,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)

于是我知道有人改了ceo.c,于是我:
$cvs update ceo.c
或者干脆:
$cvs update
把ceo.c這個文件更新為新版本,然后再干活.然后提交.

如果這天你修改了coo.c,加了一行 puts("how about another kind of bragging?");
并且提交了,但是這時候我已經 $cvs status 過了,是說我不知道你的修改.
而我加了一行printf("You must shamelessly and seems knowingness to act as a coo");
并且傻乎乎地提交:
$cvs commit coo.c
這時候,CVS會告訴我
cvs commit: Examing .
cvs server: Up-to-date check failed for 'coo.c'
cvs [server aborted]: correct above error first!

于是我知道有個狗屎在我修改文件的當口做了提交,于是我
$cvs update
這時cvs會報告:
RCS file: /home/cvsroot/nasdaq/coo.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
Merging differences between 1.1.1.1 and 1.2 into coo.c
rcsmerge: warning: conflicts during merge
cvs update: conflicts found in coo.c
C coo.c
告訴你coo.c有版本沖突,于是我編輯coo.c,這時一般文件里看起來象這樣:
  ...
printf("You must shamelessly and seems knowingness to act as a coo");
<<<<<<< foo.c
=======
...
  puts("how about another kind of bragging?");
>>>>>>> 1.2
...

于是我把上面改成:
printf("You must shamelessly and seems knowingness to act as a coo");
puts("how about another kind of bragging?");
然后
$cvs commit -m "merged" coo.c
于是下回你再更新的時候有新的補釘要打...如此往復,直到完成所有修改.
不過這里有一些要注意的地方是刪除程序,如果你刪掉一行對你可能沒有用的程序
puts("to be honest"); 而我不想刪除(因為我有用),而我不知情地直接:
$cvs update
了,那么我的這行程序也完蛋了,所以這里我們要注意所有開發人員的協調,千萬不要亂刪東西,大不了用
#if    0
#endif
宏定義對括起來.實在要刪東西,那好先標記一個版本:
$cvs tag v_0_0_1

然后你可以發布并刪除你自己的工作目錄里這個版本的文件(注意:不是刪除倉庫里的.):

$cvs release -d nasdaq

然后你再生成一個新分支:

$cvs rtag -b -r v_0_0_1 v_0_0_1_1 nasdaq

然后再建立v_0_0_1_1的分支

$cvs checkout -r v_0_0_1_1 nasdaq

編輯并修改這個分支的文件,這樣的做法比較好.

不過要注意的是,新標記和新分支的建立好由項目的管理人員負責,否則每個人都做一個分支,那么倉庫太亂了.因此,比較的開發人員之間的直接溝通是不能忽略的.一般來說,在互聯網上的標準模式是有一個管理員(可能自己并不寫程序),有一個郵遞列表,大家都在郵遞列表上交流看法和做各種決議.當形成決議之后,管理員做一個新版本的標記.以此循環.
 

還有一些命令,比如要增加一個文件 garbage_china_concept_stocks_list:

$cvs add garbage_china_concept_stocks_list

然后還要:

$cvs commit  garbage_china_concert_stocks_list

看起來有點象數據庫里的事務?的確是這樣.CVS維護著一個本地的參考文件(在CVS/Entries里),這樣提交的時候可以一次地把所有改變放到服務器端,這樣也更安全.同樣,如果想刪除文件 bankrupted_web_site:

$rm bankrupted_web_site
$cvs remove bankrupted_web_site
$cvs commit bankrupted_web_site

3,一些小技巧:
$Header$ 標記:把這個標記放在文件的任何地方都會被 cvs 替換成后修改的 cvs 用戶名,該文件當前版本號,后修改時間,該文件的 cvs 倉庫路徑,看起來象下面這個樣子:

// $Header: /home/cvsroot/simhost/simhost.cpp,v 1.2 2001/04/20 08:26:10 jqliu Exp $

一般我們把它放在開頭,這樣對程序員修改文件非常便利,很多時候你只要看一眼開頭知道文件是否新.

$Id$標記:把這個標記放在文件的任何地方都會被 cvs 替換成后修改的 cvs 用戶名,該文件當前版本號,后修改時間,該文件的 cvs 倉庫路徑,看起來象下面這個樣子:

$Id: simhost.cpp,v 1.3 2001/04/24 02:27:36 simhost Exp $

好了,上面所有的東西,估計是我們用cvs時80%情況下用的命令和內容,包括文件的更新,提交,沖突的解決,分支的派生,增刪文件等.實際上cvs的功能之強大,遠遠超出我在這里描述的內容,我這個"速成"也管不了太多了,希望隨著時間的推移,我們能夠更加有效地使用CVS.也希望大家能夠不斷補充這篇文章,后能夠成為手冊,而不僅僅是速成.當然,還要更多地參考別的文檔.

上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美a欧美1级 | 欧美成人免费观看久久 | 免费永久观看美女视频网站网址 | 免费成年人在线观看视频 | a级精品国产片在线观看 | 成人国产免费 | 日韩精品久久久免费观看夜色 | 最近中文字幕完整视频高清10 | 欧美国产在线观看 | 日韩欧美在线观看成人 | 日韩欧美在线视频 | 免费观看一级欧美大 | 久久亚洲人成网站 | 欧洲在线 | 久久久久国产精品免费免费 | 欧美成人www在线观看网页 | 免费黄色国产视频 | 好男人www社区视频在线 | 国产a国产 | 日韩亚洲综合精品国产 | h片在线播放免费高清 | 97色在线视频观看香蕉 | 日韩国产欧美视频 | 一级欧美视频 | 手机在线视频成人 | 天天色天天操天天射 | 日本一区二区三区四区视频 | 黄色片视频网站 | 深夜在线免费 | 欧美行性性性o00x | 亚洲欧美日韩综合一区 | 国产成人在线影院 | 免费视频淫片aa毛片 | 国产一区曰韩二区欧美三区 | 97夜夜操| 最近2019中文免费字幕 | 日本三级特黄在线观看 | 男人把女人靠到爽痛视频 | 884aa在线看片 | 日本一区二区三区高清福利视频 | 中文字幕综合在线 |