代码版本管理系统历史
2023-09-11 14:18:08 时间
码版本管理系统大致可以分为三个时代:
第一代:本地式
这代主要的特点提供本地代码版本控制,比如SCCS(1972)、 PVCS(1985)等。
这代主要实现了基本的代码版本管理,但缺点是无法让多人同时对一个版本库进行修改。这个也和当时软件规模不够大有关,也没有这样的需求。
第二代:客户端-服务器式
这代主要的特点是提供集中式服务器端代码版本控制,比如 CVS(1986), ClearCase(1992), Visual SourceSafe(1994), Perforce(1995), Subversion(2000) 等。
这代主要是实现了中心服务器端的代码版本管理,特点是可以让多人同时对一个代码版本库进行同步和修改,但缺点也相当明显:
- 在无法连接服务器的情况下,无法查看日志以及提交和比较代码版本(慢速网络和远程异地工作的程序员的痛),以及当服务或者网络出现问题的时候很多人员就会无法工作。
- 不支持local branch,导致branch创建管理复杂,并且一旦创建就很难修改(快速迭代开发中的程序员的痛)
- 由于只有一个中心端服务器,一旦发生灾难性问题,那么所有日志都会丢失,所以需要经常做备份(备份需要不小的成本)
- 如果软件代码量过于庞大,一般会出现速度缓慢的情况,因为每次的日志查询、不同版本之间的代码比较和代码提交等操作都需要和服务器通信,造成服务器端的负载过大。
- 提交代码时无法先做Code Review 和CI Review。
第三代:分布式
这代主要的特点是提供分布式代码版本控制,比如Git(2005), Mercurial(2005)等。
这代结合了第一代和第二代的优点并实现了分布式的代码版本管理。
这代的优点:分布式管理,在没有和服务器有连接的情况下仍然可以查看日志,提交代码,创建分支;支持local branch,可以快速方便的实现各种分支管理;支持分布式,从而可以实现分块管理,以及负载分流管理。
缺点是有一定的学习曲线,比如分布方式下的代码同步,local branch的理解与运用,分布式代码管理的理解与运用等。
SVN到Git的迁移方案一般主要会使用两种工具:
- 开源免费的git-svn;
- 商业收费的Subgit。
作者:ThoughtWorks中国
链接:https://www.zhihu.com/question/25491925/answer/175222330
相关文章
- abp(net core)+easyui+efcore实现仓储管理系统——组织管理升级之上(六十一)
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之六(五十五)
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十一(四十七)
- 手写一个服务器代码将 《vue电商后台管理系统》部署上去 上线、打包
- 基于C语言实现(控制台)学生程序管理系统【100010764】
- 基于C++实现的(控制台)员工工资管理系统【100010691】
- 基于J2ME个人文件信息分类管理系统【100010361】
- 基于ASP.NET+SQL Server实现(Web)企业进销存管理系统【100010296】
- 基于QT(C++)+Mysql实现的带GUI的图书管理系统【100010047】
- [vue]几十行代码写一个图书管理系统小demo来学习表单控件、列表渲染和事件绑定。
- 诺基亚发布NetAct云网络管理系统,为5G网络演进铺路
- 图书馆管理系统C语言代码
- Java程序设计之(一)MySQL的交互-学生信息成绩管理系统
- CRM客户关系管理系统(二)
- CRM客户关系管理系统(四)
- C语言课程设计|学生成绩管理系统(含完整代码)