cvs中update、syncronize和commit的区别

来源:互联网 发布:java soa 实例 编辑:程序博客网 时间:2024/06/06 01:39

cvs使用于版本管理,规范项目。

初次使用cvs的开发者容易对update、syncronize和commit几个操作混淆,有时候会导致“代码事故”。

经过理论学习和代码实践,总结如下,希望有帮助。

需要明确,cvs是用于版本控制的。

update:从库(cvs-repository)中更新代码到本地

update只有在本地代码版本低于cvs-repository中的项目代码文件版本时,才能update成功。如果版本相同,update了本地代码不会改变,因为版本相同cvs认为你的代码为最新,不要更新。如果本地代码版本低于库中的,那么说明不是最新需要更新,并且此时,如果不更新,是无法commit的,目的是为了保证每次commit的版本最新,确保版本递增,代码有序更新。

syncronize:同步比较代码。这个仅仅是比较代码而已,开发者不能修改代码。但是通过这个操作,可以找出和主线不同的代码文件,方便比较而已。

commit:提交本地代码到库。此时的操作其实是,本地项目代码文件覆盖库该项目相应代码。此时库和你自己相应有修改的代码文件版本会变高一个级别(如1.4变成1.5)

commit大家都会,但是commit只有在本地版本和库版本相同(即最新版本)的时候才生效。试想,如果本地版本不是最新,那么代码不是最新是以前代码,commit是不是也没有意义呢?

但是update到底是如何进行的呢?

很多人不是很清楚。

update的简单原理就是:update只有当本地版本低于库版本才生效。因为很简单,如果版本同,意味着你下载的是最新的,只有你修改的东西,没有别人修改的,你修改的肯定和原先的不同,总不会要你在比较还原原来的吧。你只要比较无误后commit,并它自动提升版本就行。

 当你的版本和库中比较,低于库版本时候,意味着代码除了你自己修改之外也被别人改了,意味着你的现有版本不是最新,你首先需要更新版本到最新才能commit,否则你的commit是无效的,会提示没有代码没有改变,无需commit这样的提示,但是你的代码确实改了,谁叫你不update呢?机器发现你的版本不是最新,就直接认为你代码没变化了,不让你提交(这是出于代码保持更新版本递进考虑)。

那么,当你update的时候,库代码和你本地代码是如何更新的呢?这里所谓的更新并不是覆盖copy,而是会和原来存放的副本比较,甚至多个副本,如多个版本代码后为1.7,你为1.4,则存在你1.4这个副本和1.7这个副本,就会比较。如果自己1.4代码改动后和1.7比较,相同位置代码行不同,则会比较1.4原始版本,如果自己的和1.4比较这个位置一样,说明自己没有修改,则以1.7为准,1.4和1.7相比代码多了,则删除,少了,则增加1.7的。如果这个位置修改了,则代码冲突,会标记出来。

        上述都是一些原理性的东西,便于理解而已。其实你只要记住如何提交代码就可。

        代码要提交的时候,先update,将最新版本相关修改下载到本地代码中,再按F5刷新代码(确保代码即使更新)。

                                           进行比较,哪里不一样,进行手动合并。

                                            再commit,commit的时候会显示与库不同的代码文件,比较缺人无误之后,逐次确认提交就可。

       写心得不容易,好的请分享。

0 0
原创粉丝点击