天天看點

SVN,CVS,VSS工作機制比較

SVN,CVS,VSS不同版本模型工作方式比較

VSS:采用 鎖定——修改——解鎖 模型 。該模型限制太多,使用者必須線性單使用者工作。并發協作性差,如果兩開發人員在同一時刻需要修改同一檔案,則隻能是等待某一開發人員修改并解鎖後,再次從版本伺服器擷取最新更改并鎖定。

CVS:采用 複制——修改——合并 模型。該模型相比VSS有了較大改進,多使用者可以同時協作開發。并行性好。多使用者可同時擷取版本控制伺服器上最新的同一檔案,建立私用工作副本。并修改各自的副本,最終将各自的副本合并成最終版本。不過麻煩之處就是必須手工核對合并操作的正誤。還有就是某些情況(雖然很少)比如需要同時修改一張圖檔等使得最終合并無法操作的情況,此時VSS的鎖定——修改——解鎖模型單線工作相對可以解決該問題。

SVN:預設采用CVS 複制——修改——合并 模型。但是自從1.2版本以後同時支援VSS的鎖定——修改——解鎖工作模式。兼并了兩者的長處。

來看看SVN的工作副本是如何跟蹤版本庫的呢?

1.本地 副本未修改且是最新的。即本地檔案中沒有修改的内容,且版本控制伺服器上也未有對此檔案新送出的修改。此時SVN的commit 和update操作都不作任何反應。

2.本地副本已修改且是最新的。即本地檔案有修改,但是版本控制伺服器上沒有對此檔案新的送出修改。此時SVN的commit操作會成功送出。update操作不做任何事情。

3.本地副本沒有修改且已經過時。即本地檔案沒有修改,但是版本控制伺服器上對此檔案已經有新送出修改。此時SVN的commit操作不作任何事情,update操作将會更新副本到最新的版本。

4.本地副本已修改,且也已經過時。即本地檔案已經有了修改,且版本控制伺服器上的此檔案也有人有了新的送出修改。此時commit送出操作失敗。需要update操作,擷取新版本,此操作會自動智能合并新版本修改和本地版本内容修改。此過程中如果出現沖突,如修改了同一個地方的内容,則此時需要使用者手工解決沖突。

繼續閱讀