成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

經(jīng)驗(yàn)總結(jié):Subversion版本控制與CVS的對比

開發(fā) 項(xiàng)目管理
本文將介紹如何通過 Subversion 來構(gòu)建小組開發(fā)過程中最為重要的Subversion版本控制環(huán)境,包括Subversion 環(huán)境的安裝配置以及如何通過各種有效的客戶端工具來提高工作的效率。

版本控制是管理信息變更的一門藝術(shù)。Subversion版本控制工具早已經(jīng)成為許多程序員的主要工具之一。但是版本控制軟件的用途并不僅限于軟件開發(fā)的領(lǐng)域。只要人們使用計(jì)算機(jī)來管理經(jīng)常變更的信息,就需要使用版本控制工具。而這正是 Subversion 可以展示自己的地方。

下面我們來看一下版本控制:Subversion與CVS的對比:

一、Subversion包含絕大部分CVS功能

Subversion作為CVS的重寫版和改進(jìn)版,其目標(biāo)就是作為一個(gè)更好的版本控制軟件,取代目前流行的CVS。Subversion的主要開發(fā)人員都是業(yè)界知名的CVS專家。Subversion支持絕大部分的CVS功能/命令;Subversion的命令風(fēng)格和界面也與CVS非常接近。當(dāng)然,不同的地方正是對CVS的改進(jìn)。  

二、全局性的版本編號

一個(gè)新的版本,并得到一個(gè)自增量的版本號N+1,該版本號并不針對某個(gè)特定的文件,而是全局性的、針對整個(gè)版本庫的。因此,我們可以將Subversion的版本庫看作是一個(gè)文件系統(tǒng)或文件目錄樹的數(shù)組。從技術(shù)的角度來說,在Subversion中,“文件foo.c的第5版本”這個(gè)說法是錯(cuò)誤的;正確的說法應(yīng)該是:”文件foo.c在版本庫被修改了5次,即執(zhí)行5次commit后是什么樣子?”。顯然,在Subversion中,版本庫被修改5次后foo.c的內(nèi)容,和被修改了6次后foo.c的內(nèi)容很可能完全一樣,因?yàn)榘姹編斓牡?次修改很可能只修改了版本庫的其他部分,而并沒有對foo.c的進(jìn)行修改。相反,在CVS中,文件foo.c的第1.1版本和第1.2版本總是不同的。

Subversion版本控制的全局性版本編號為Subversion帶來了諸多的優(yōu)勢:如對目錄或文件執(zhí)行拷貝,無論涉及多少文件,ubversion不需要對單個(gè)文件依次執(zhí)行拷貝命令,僅僅需要建立一個(gè)指向相應(yīng)的全局版本號的一個(gè)指針即可。  

三、目錄的版本控制

CVS只能對文件進(jìn)行版本控制,不能對目錄進(jìn)行版本控制,因此CVS沒有任何關(guān)于文件“移動”(move)操作的概念。當(dāng)人為進(jìn)行文件移動操作時(shí),CVS只能注意到,一個(gè)文件在一個(gè)位置被刪除了,而在一個(gè)新位置創(chuàng)建了另外一個(gè)文件。由于它不會連接兩個(gè)操作,因此也很容易使文件歷史軌跡丟失。設(shè)置CVS存儲庫時(shí),必須非常謹(jǐn)慎地為每個(gè)文件選擇準(zhǔn)確的位置,因?yàn)樵谠O(shè)置之后,幾乎就要一直使用這個(gè)位置了。

同樣由于CVS不記錄目錄的版本歷史,CVS不支持對文件的“重命名”(rename),人為的對文件進(jìn)行重命名會使得命名前后的文件失去歷史聯(lián)系,而記錄歷史本來是版本管理的主要目的。還有,CVS不支持對文件的“拷貝”(copy),人為的拷貝對CVS而言,只能看到新的文件的增加,而不能記錄拷貝源文件和目標(biāo)文件之間的聯(lián)系。

綜上所述,缺乏對文件“移動”、“重命名”、“拷貝”的支持的根源在于CVS不能記錄目錄的版本歷史,而這些操作在當(dāng)前的軟件開發(fā)過程中經(jīng)常發(fā)生,這正是Subversion被開發(fā)并取代CVS的主要原因之一。

Subversion將目錄作為一類特殊的文件來處理(事實(shí)上,從文件系統(tǒng)的角度來看,目錄確實(shí)是一類特殊的文件,當(dāng)目錄中的子目錄/文件被刪除、重命名、或新的子目錄/文件被創(chuàng)建時(shí),目錄的內(nèi)容將發(fā)生改變)。因此,Subversion象記錄普通文件的修改歷史一樣記錄對目錄的修改歷史,當(dāng)發(fā)生文件/目錄的移動、重命名或拷貝操作時(shí),Subversion能夠準(zhǔn)確記錄操作前后的歷史聯(lián)系。同樣,象對文件的不同歷史版本進(jìn)行比較一樣,Subversion支持對目錄的不同歷史版本的比較,清晰展現(xiàn)目錄的變化歷史。 

四、原子性提交

從使用者的角度來看,CVS和Subversion版本控制都支持對多個(gè)文件修改的批量提交,但二者在實(shí)現(xiàn)方式上存在本質(zhì)的區(qū)別。CVS采用線性、串行的批量提交,即依次地,一個(gè)接一個(gè)地執(zhí)行提交,每成功提交一個(gè)文件,該文件的一個(gè)新的版本即被記錄到版本庫中,提交時(shí)用戶提供的日志信息被重復(fù)地存儲到每一個(gè)被修改的文件的版本歷史中。

CVS串行批量提交模式的弊端在于-當(dāng)任何原因造成批量操作的中斷時(shí)(典型原因包括:網(wǎng)絡(luò)中斷、客戶端死機(jī)等),版本庫往往處于一個(gè)不一致的狀態(tài):原本應(yīng)該全部入庫的文件只有一部分入庫,很有可能版本庫中的最新版本不能順利編譯,更為嚴(yán)重的是,隨著其他的用戶執(zhí)行cvsupdate操作,該不一致性將迅速在開發(fā)團(tuán)隊(duì)中擴(kuò)散,從而嚴(yán)重影響團(tuán)隊(duì)的開發(fā)效率,并存在質(zhì)量隱患。另外,假如該批量提交的中斷沒有被及時(shí)發(fā)現(xiàn),開發(fā)團(tuán)隊(duì)往往要花更多的時(shí)間進(jìn)行軟件調(diào)試和排錯(cuò)。

CVS即使在批量提交不發(fā)生中斷時(shí)也會造成不一致:假設(shè)用戶A啟動一個(gè)需要較長時(shí)間才能完成的批量提交;與此同時(shí),用戶B執(zhí)行cvsupdate操作。此時(shí),用戶B很有可能得到一個(gè)不一致的更新,即用戶B通過“更新”操作,得到用戶A的部分修改文件。

Subversion徹底消除了CVS的以上弊端。無論批量提交包含多少文件修改,只有當(dāng)全部文件修改都成功入庫,該提交才變得有效,才對其他用戶可見;否則,無論任何原因造成中斷,Subversion都會自動執(zhí)行“回滾”(rollback)操作。換一個(gè)說法,Subversion保證所有的修改要么全部入庫生效,要么一個(gè)也不入庫,即對版本庫不作任何的修改。這就是Subversion的原子性提交(atomiccommit)。

由于Subversion的原子性提交特性和全局版本編號方式,當(dāng)提交成功完成時(shí),一個(gè)唯一的、新的全局版本編號產(chǎn)生,而提交時(shí)用戶提供的日志信息與該新的版本編號關(guān)聯(lián),只進(jìn)行一次存儲(區(qū)別于CVS的按文件重復(fù)存儲)。

【編輯推薦】

  1. 三大主流Subversion客戶端初探
  2. Windows下Subversion管理配置詳細(xì)說明
  3. 七步搞定Subversion服務(wù)器在Ubuntu下的配置
  4. Subversion SVN協(xié)議解析遠(yuǎn)程整數(shù)溢出漏洞
  5. CentOS系統(tǒng)中安裝subversion并使用svn+ssh訪問

 

責(zé)任編輯:佚名
相關(guān)推薦

2010-05-19 16:57:49

SVN與CVS的區(qū)別

2011-04-08 18:00:19

GitSubversion版本控制系統(tǒng)

2010-05-17 09:45:00

subversion源

2010-05-21 09:42:22

Subversion學(xué)

2010-05-13 15:18:19

Subversion插

2010-05-13 14:27:28

Subclipse插件

2010-05-18 18:19:07

Subversion服

2010-05-18 17:12:11

Subversion安

2010-05-18 17:39:28

Subversion配

2010-05-13 17:00:50

Subversion安

2010-05-13 14:08:58

Visual Stud

2009-10-15 09:27:00

2011-07-21 13:40:17

java

2009-09-16 17:13:54

學(xué)習(xí)Linq

2009-08-19 09:24:43

AJAX引擎經(jīng)驗(yàn)總結(jié)

2009-09-29 16:32:11

OJB Hiberna

2010-05-18 16:05:24

2010-05-18 15:06:46

Subversion命

2010-05-18 15:48:03

2010-03-25 13:42:14

云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美黄页 | 综合久久综合久久 | 亚洲精品欧美 | 欧美精品一区三区 | 亚洲激情一级片 | 91欧美| 欧美老少妇一级特黄一片 | 在线视频一区二区 | 美女黄网站 | 高清国产午夜精品久久久久久 | 麻豆久久久| 日韩国产精品一区二区三区 | 在线黄色影院 | 古装人性做爰av网站 | 亚洲成人国产综合 | 国产高潮好爽受不了了夜夜做 | 四虎成人在线播放 | 亚洲精品日韩综合观看成人91 | 中文字幕一区二区三区不卡在线 | 中文字幕视频在线看5 | 亚洲婷婷六月天 | 婷婷久久综合 | 欧美午夜一区二区三区免费大片 | 日日夜夜草| 国产精品久久久久久一级毛片 | 久久久久久综合 | 羞羞视频网站免费观看 | 男女视频在线观看免费 | 野狼在线社区2017入口 | 狠狠操天天操 | 国产成人免费视频网站视频社区 | 亚洲 欧美 综合 | 91手机精品视频 | 国产欧美一区二区三区日本久久久 | 欧美一级淫片007 | 日韩一区二区视频 | 久久久久久国产一区二区三区 | 91麻豆产精品久久久久久 | 91av在线免费播放 | 激情毛片| 看羞羞视频免费 |