版本控制工具有哪些(常见的版本控制软件)

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,方便查看更改历史,备份以及恢复以前的版本,保证多人协作不出问题。

1,原始的版本控制

  • 版本控制工具的黑暗时代:
    • 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本;
    • 保存副本命名随意,版本难辨新旧,不能辨别每一版的修改内容。

2,版本控制起源:diff & patch

  • 在最初的版本控制软件出现之前,其实已经有了比较好用的源码比较与打补丁的工具:diff和patch。
  • Linus Torvalds(Linux之父)也对这两个工具偏爱有加。
  • 在1991-2002年之间,即使CVS出现之后,Linus一直使用diff和patch管理着Linux的代码。
  • diff与patch是用于源码版本控制中的两个最基本的概念。
  • CVS(Concurrent Versions System):协作版本系统。

2.1,Diff简介

  • diff用来比较两个文件或者目录之间的差异。

2.2,Patch简介

  • patch是diff的反向操作
  • 我们把上述差异结果保存到文件中,例如:diff.txt中,那么这个diff.txt就可以用来从left.c推算出right.c的内容,反之亦可。

通过diff.txt,把left.c变成right.c的内容:

$ patch left.c diff.txt
  • 上面执行的命令的意思是,把diff.txt应用到left.c文件上,命令结束后left.c与right.c中的内容是一样的。

通过diff.txt,把right.c变成原来left.c的内容:

$ patch -R right.c diff.txt
  • 上面执行的命令中多了一个-R,其代表的意思是把diff.txt采用反向的方式,应用到right.c上,命令结束后right.c与left.c中原来的内容是一样的。

3,RCS:最早期的本地版本控制工具

  • RCS(Revision Control System)
  • RCS作为非常古老的版本工具,远远在SVN和已经退役的CVS之前,它的古老程度应该比Web开发的ASP前代的CGI还要更久远。
  • 如果想对版本管理实现方式进行深入研究的话,研究RCS是一种最为简单的入手方式。
  • RCS采用把diff的集合,采用RCS自己的格式保存到磁盘中(可以通过diff -n left.c right.c产生RCS格式的diff内容),能通过这些diff集合,重新回到文件修改的任何历史中的点。

4,CVS & SVN:集中式版本控制工具

CVS简介

  • CVS(Concurrent Versions System)诞生与1985年,有史以来第一个被大规模使用的版本控制工具。CVS的出现让工程师可以协同工作。

CVS存在的问题

  • 不支持原子化提交,会导致客户端向服务器端提交了不完整的数据,还有网络传输效率低等。

SVN诞生

  • SVN(Subversion)目的是创建一个更好用的版本控制以取代CVS。优化了服务器上内容的存储,实现了原子提交等。

SVN存在的问题

  • 在局域网之外使用SVN,单是查看日志、提交数据等操作的延迟,就足以让基于广域网协同工作的团队抓狂了。

集中式版本控制存在的问题

  • 狭窄的提交通道提交排队,不能同时修改,提交缺乏质量控制。缺乏代码门禁,在本地代码提交到服务器之间缺少检查防护。一种解决方案:Rietveld提供旁路检查
  • 数据安全性差单点故障黑客攻击

5,Git:Linus的第二个伟大作品

5.1,Git起源

  • Linux之父Linus是坚定的CVS反对者,他也同样地反对SVN。2002年Linus顶着开源社区精英们的口诛笔伐,选择了一个商业版本控制系统BitKeeper作为Linux内核的代码管理工具。和CVS/SVN不同,BitKeeper是属于分布式版本控制系统。
  • Git诞生大事件2005年4月3日,开始开发Git。2005年4月6日,项目发布。2005年4月7日,Git就可以作为自身的版本控制工具了。2005年4月18日,发生第一个多分支合并。2005年4月29日,Git的性能就已经达到了Linus的预期。2005年6月16日,Linux核心2.6.12发布,那时Git已经在维护Linux核心的源代码。

5.2,集中式 VS 分布式

集中式 VS 分布式(1):记录差异还是记录快照

  • Git和其他版本控制系统(包括Subversion和近似工具)的主要差别在于Git对待数据的方法。
  • 概念上来区分,其它大部分系统以文件变更列表的方式存储信息。
  • 这类系统(CVS、Subversion、Perforce、Bazaar等等)将保存的信息看作是一组基本文件和每个文件随时间逐步积累的差异。
  • Git不按照以上方式对待或保存数据。反之,Git更像是把数据看作是对小型文件系统的一组快照。
  • 每次提交更新,或在Git中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。
  • 为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git对待数据更像是一个快照流。

集中式 VS 分布式(2):脆弱的中央库 VS 强壮的分布库

  • 脆弱的中央库备份的重要性集中式CVS存在单点故障,备份极其重要。服务器压力基本上所有的操作需要与服务器交互,操作受限于带宽,不能移动办公。安全性集中式CVS假定服务器是安全的。假定成立吗?存在单点故障,黑客攻击等。不适合开源项目强调集中管理,适合人数不多的项目。
  • 强壮的分布库全是服务器数据最安全;无带宽和性能瓶颈。提交为本地操作快;全离线操作;编码不会被冲突打断;能够移动办公。数据的完整性Git数据、提交全部使用SHA1哈希,以保证完整性,甚至提交可以使用PGP签名。工作模型适合分布式开发,强调个体。Git容灾示例kernel.org 2011 attack(2011.8-2011.11)宇宙射线反转磁盘一个比特的数据修复

5.3,选择合适的版本控制工具

  • SVN不适合的领域跨地域的协同开发对代码的高质量追求和代码门禁
  • Git不适合的领域不适合Word等二进制文档的版本控制,因为:Git无锁定/解锁模式,故不能排他式修改。整体的读授权,不能将读授权精细到目录级别,解决方案:版本库按照目录拆分。

6,结语:Git是什么

  • Git是一个版本控制工具,而且是一个开源的分布式版本控制工具。
  • 按照Linus本人的描述,Git的很多命令设计是来源于BitKeeper,但是Git有更多属性:极快的速度简单的设计对非线性开发模式的强力支持(允许成千上万并行开发的分支)完全分布式有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)

7,小结

  • 版本控制工具的发展历史经过:原始人工维护状态,本地RCS,集中式如CVS、SVN和分布式如Git。
  • 版本控制工具提供了协作开发的能力,借助它们我们可以回到任何时间的代码状态。
  • 集中式版本控制工具,几乎所有的动作都需要服务器参与,并且数据安全性与服务器关系很大。
  • Git是分布式版本控制工具,除了与服务器之间进行按需同步之外,所有的提交操作都不需要服务器。
秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 医保跟社保一样吗(医保和社保的区别是什么)

    说到社保,实际上就是大家常说的五险一金,它的作用包括看病报销和退休养老等等。 不太了解社保的朋友,可以经常会把医保和社保弄混淆,傻傻分不清。 职场的小伙伴都知道社保包含医保,那么社…

    2022年6月15日 投稿
  • 个人投资者需要什么条件开通创业板(附带:创业板开户条件)

    今天,再来和大家分享下,个人投资者想要开通创业板,需要什么样的条件。 根据最新的《创业板投资者适当性管理办法》的规定,我们将创业板投资者分为两类:已开通过创业板交易权限的投资者和尚…

    2022年5月20日
  • 支付宝商户怎么开通(支付宝怎么开通小微商户)

    支付宝商家服务怎么开通?支付宝商家服务提供收款码申请、收款记录对账、活动中心、免费提现、语音播报、免费门诊报销、花呗收款、敢赔等增值服务,是支付宝为个体经营者和企业提供的一站式收款…

    2022年5月8日
  • 植发医院排行榜(植发医院排名)

    财联社(深圳,记者 成孟琦)讯,港股新股市场近期不景气到什么程度呢?只要暗盘与首日没有破发,就打败了今年下半年九成的新股。而“植发第一股”雍禾医疗以160倍的认购额在遇冷的新股市场…

    2022年6月6日
  • 理财平台有哪些(正规投资理财平台推荐)

    — 这是忠伟的第 214 篇原创 — 有朋友私信我。问我平时投资理财都使用什么工具App。 其实,我用的工具App也不多,估计大家日常也会用到。 今天和朋友们分享一下,我经常使用的…

    2022年5月5日
  • 手机照片恢复大师(免费一键恢复手机照片)

    照片恢复大师免费版。手机上通常都会存储着很多照片,有自拍的,风景的,也有一些搞笑的表情包,手机使用久了,手机可能就会存着大量没用的照片,如果不清理的话,那些我们常用的照片就比较不好…

    2022年3月2日 投稿
  • 马赫等于多少公里每小时(飞行速度1马赫的距离)

    “天下武功,唯快不破。”人类在追求速度这条道路上一发不可收拾。因为速度能带来效率,也意味着能带来更多的利益。 在我们如今的日常工作生活中,速度的提升给我们带来了极大的便捷:无论外卖…

    2022年5月20日
  • 信用卡提前还款会怎样(信用卡提前还款是大忌)

    很多人都有信用卡,信用卡已经融入了我们的生活,一般来说我们使用信用卡后提前还款是没有影响的;如果我们申请了信用卡分期,选择提前还款后分期的手续费还是要按照约定的规则进行支付,不会因…

    2022年4月29日
  • 红旗车怎么样(红旗车的质量怎么样)

    红旗车质量到底怎么样一直颇受车友们关注,毕竟红旗能打造国产车的第一形象走出国门,不少国产车也会跟着沾光。目前,红旗构建了“一部四院”研发体系以及“三国五地”的研发布局。在这几年红旗…

    2022年3月16日
  • 成都的旅游攻略成都游玩攻略

      成都是四川省省会城市,也是中国历史文化名城之一。成都旅游资源挺丰富的,众所周知的春熙路,宽窄巷子,锦里,都是比较成都人气比较旺的几个景点,基本上都是以逛街吃小吃为主,春熙路则是…

    2021年6月13日
品牌推广 在线咨询
返回顶部