1 定义
版本控制(Revision Control),也被称为Version Control (System)或(Source) Code Management, 用来管理同一信息单元的不同版本。它常用于软件开发过程中,用来管理诸如源代码、文档或其它被整个开发人员所共有的资源,藉以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。版本控制会记录所有对源代码或文档的改动,并会用一个数字来加以标记,这个标记被称为版本(revision)。例如:一种简单的版本控制形式如下:最初的版本指定为“1”,当做了改变之后,版本编号增加为“2”,以此类推。
2 版本管理模型
2.1 集中式模型
传统的版本管理系统都是采用集中式模型,即所有的版本控制活动都发生在一个共享的中心版本库上。如果两个开发者在同一时间下尝试更改同一份文件,并且没有采取有效措施,那么他们很可能会互相覆盖各自的改动。我们有两种方法来解决这种情况,根据解决方法的不同,集中式版本管理系统又分为两种模型:文件锁定和版本合并。
2.1.1 文件锁定
解决上述这个问题最简单的方法就是在一个时间段里版本库的一个文件只允许被一个人修改。首先在修改之前,先到的人会“锁定”这个文件,那么另一个人就无法修改这个文件,在先到的人释放这个“锁”之前,他只能阅读文件。这又被称为“锁定-修改-解锁”模型。早期的VSS就是使用这种模型。
锁定-修改-解锁模型的缺点就是限制太多:
n 如果一个人获得了“锁”,而他长时间没有释放“锁”,那么其他开发者就无法进行正常开发。
n 锁定可能导致无必要的线性化开发,如果两个开发者对同一文件的修改根本不冲突,他们完全可以同时对代码进行修改。
2.1.2 版本合并
许多版本控制系统,如CVS、Subversion, 允许许多开发者在同一时间对同一文件进行修改。第一个提交的开发者在更改完后“提交”到中心版本库时总是成功的。在其它开发者提交的时候,版本控制系统有 能力能把所有的修改合并进中心版本库。但是,如果有两个开发者的修改重叠了,那么就会引起“冲突”,这时你就会看到一组冲突集,你可以选择修改自己的代码 或和其他开发者进行协商来解决冲突。
2.2分布式模型
和集中式模型的客户-服务器的方法相反,分布式模型采用一种点对点的方法。通常的集中式管理系统,如CVS,Subversion 已经得到广泛应用,但是集中式的管理存在相应的缺陷,例如对唯一的版本库过分依赖:一旦不能正常连接到集中式的版本库,整个系统陷入瘫痪。分布式模型最大的能力就在于可以维护分布式的版本库,分散的开发人员可以通过分布式版本管理建立远程的 CVS,Subversion,P4 协议的版本库镜像,选择工作在自己合适的镜像版本库,这个镜像甚至可以是本地的,整个工作可以离线进行,然后在需要的时候同步镜像版本库到主版本库。目前,采用分布式模型的版本管理系统有Bazaar、Git、Mercurial等。
3常用术语介绍
3.1分支(Branch)
在一个时间点,复制一份处于版本控制之下的文件,从这之后,这两份拷贝就可以独立的互不干扰的进行各自开发。
3.2取出(Check-out)
一次“取出”,就是在本地创建一份仓库的工作拷贝。
3.3提交(Commit)
一次“提交”,将本地的修改写回到仓库或合并到仓库。
3.4冲突(Conflict)
当开发者们同时提交对同一文件的修改,而且版本系统不能把它们合并到一起,就会引起冲突,就需要人工来进行合并。
3.5汇出(Export)
汇出和取出非常相似,只是汇出的文件不再处于版本控制之下,常用于发布代码。
3.6汇入(Import)
汇入就是在第一次的时候,把本地的文件拷贝到仓库中,使它们处于版本控制之下。
3.7合并(Merge)
合并就是把所有对文件的修改统一到文件里。
3.8仓库(Repository)
仓库就是当前的和历史的处于版本控制之下的文件所在的地方,通常在服务器端。
3.9工作版本(Working copy)
从档案库中取出一个本地端的复制,所有在档案库中的档案更动,都是从一个工作版本中修改而来的,这也是这名称的由来。
相关推荐
《基于软件体系结构的版本管理模型的研究》 随着软件开发的复杂性和规模不断提升,传统的基于文件的版本控制系统已经无法满足现代软件开发的需求。基于软件体系结构的版本管理模型应运而生,它旨在以更高级别的抽象...
《基于软件体系结构的版本管理模型的研究》 随着软件开发的复杂性和规模不断提升,传统的文件版本控制系统已经无法满足现代大型软件项目的管理需求。基于软件体系结构的版本管理模型应运而生,它以更高的粒度对软件...
【基于软件体系结构的版本管理模型的研究】 在现代软件开发过程中,版本管理是不可或缺的一环,尤其是对于大型软件系统而言。传统的软件配置管理主要依赖于文件版本控制,但随着软件规模的增长和软件体系结构的复杂...
良好的元模型管理系统应当能够适应变化,随着业务的发展和技术的进步,它应具备扩展新功能的能力,同时还要能够处理之前版本的数据。CWM元模型的特点之一就是提供了不同层元模型的可扩展性,例如M2满足了M1的可扩展...
在这个主题中,我们主要关注工作流管理模型、方法和系统,这些是构建高效业务流程的基础。以下是对这些核心概念的详细阐述: **工作流管理模型**: 工作流管理模型是用来描述和规范业务流程的框架。常见的模型有...
在模型库管理系统中,Hibernate可能是用来管理模型数据的主要工具,它可以自动处理SQL语句的生成和执行,大大降低了数据库操作的复杂性。通过定义实体类和映射文件,开发者可以方便地进行模型的添加、删除、修改和...
项目管理简单模型是一种有效指导项目执行的框架,尤其适用于那些尚未建立完善管理规范且团队经验不足的组织。本文将深入探讨这一模型中的四个关键步骤:系统目标、项目计划、工作量量化以及过程改进。 首先,系统...
在IT行业中,软件开发项目管理模型是至关重要的概念,它涉及到如何有效地规划、组织和执行一个软件开发项目,确保项目按时、按预算并达到预定的质量标准。这些模型为团队提供了结构化的方法,以便高效地进行需求分析...
EPA(Environmental Protection Agency,环境保护署) SWMM(storm water management model,暴雨洪水管理模型)是一个开源的降水-径流模拟模型,主要用于模拟城市某一单一降水事件或长期的水量和水质模拟。...
提出面向领域敏捷定制ERP产品开发模型,重点论述面向领域敏捷ERP定制过程,给出了软件开发过程中的 ERP软件构件版本管理、ERP构件组版本管理以及ERP产品的版本管理模型和详细的解决方案。解决了ERP产品柔性、适应性...
6. **版本控制**:记录模型的不同版本,便于追踪和回溯修改历史。 【DayinCMS系统特性】 虽然没有详细信息,但我们可以推测DayinCMS可能包含以下特性: 1. **用户界面**:提供直观的用户界面,使得3D模型的上传、...
这可能包括模型的上传、存储、检索、版本控制、权限管理以及元数据描述等。模型库不仅要能够容纳各种类型的模型(如机器学习模型、数据分析模型或工程设计模型),还需要支持模型的分类和标签,以便用户能够快速找到...
### Stable Diffusion 模型管理与 ControlNet 支持 SDXL 模型解析 #### 一、模型管理小技巧 **1.1 中文文件夹 ModelS 的优势** - **查看方便**:用户可以通过设置中文文件夹的方式进行模型管理,这使得在浏览不同...
ETOM(Enhanced Telecom Operations Map)是基于TM Forum的TOM(Telecom Operations Map)模型的扩展版本,旨在解决TOM模型在运营管理和电子商务方面的不足之处。ETOM模型的设计目标是提供一个更为完整的业务过程...
**CMMI模型3.0版本详解** CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是国际上广泛认可的一种组织过程改进框架,它通过提供一套系统的最佳实践来帮助企业和机构提升其在软件开发、服务提供...
### 配置与发布管理成熟度模型:深入解析 在当今快速迭代的IT环境中,持续集成(CI)与持续交付(CD)已成为软件开发不可或缺的一部分。为了确保项目的顺利进行,组织需要评估其CI/CD流程的成熟度,以便识别改进的...
这种版本管理机制有助于跟踪历史更改,确保在设计过程中不会对现有元数据产生负面影响。只有经过正式发布的元模型才能被元数据所使用,这样可以有效地将元模型的设计与应用阶段隔离,提高系统的稳定性和可靠性。 ##...