版本控制系统是一种软件,它跟踪一个文件或一组文件在一段时间内的变化,以便你以后可以回忆起特定的版本。它还允许你与其他程序员一起工作。
版本控制系统是一个软件工具的集合,帮助一个团队管理源代码的变化。它使用一种特殊的数据库来跟踪代码的每一次修改。
开发人员可以将早期版本的代码与旧版本的代码进行比较,以修正错误。
版本控制系统优点
版本控制系统在软件开发中是非常有帮助和有益的;不使用版本控制来开发软件是不安全的。它为不确定因素提供了备份。版本控制系统为开发者提供了一个快速的界面。它还允许软件团队根据团队的规模保持效率和敏捷性,以包括更多的开发人员。
拥有一个版本控制系统的一些主要好处如下。
- 文件的完整变化历史
- 同时开展工作
- 分支和合并
- 追溯性
版本控制系统类型
- 本地化版本控制系统
- 集中式版本控制系统
- 分布式版本控制系统
本地化版本控制系统
本地化的版本控制方法是一种常见的方法,因为它很简单。但这种方法导致出错的几率更高。在这种方法中,你可能会忘记你在哪个目录中,不小心写到了错误的文件或复制了你不想要的文件。
为了处理这个问题,程序员们开发了有一个简单数据库的本地VCSs。这样的数据库在修订控制下保存所有的文件变化。本地版本控制系统保存文件的本地副本。
本地VCS的主要缺点是它有一个单点故障。
集中式版本控制系统
开发人员需要与其他系统上的其他开发人员进行合作。在这种情况下,本地化的版本控制系统失败了。为了处理这个问题,集中式版本控制系统被开发出来。
这些系统有一个包含版本文件的单一服务器,以及一些客户从一个中央地方签出文件。
集中式版本控制系统有很多好处,特别是比本地的VCS要好。
- 系统中的每个人都有关于其他人在项目上所做工作的信息。
- 管理员对其他开发者有控制权.
- 处理一个集中式的版本控制系统比处理一个本地化的版本控制系统更容易。
- 一个本地版本控制系统通过一个服务器软件组件来存储和管理不同版本的文件。
它也有与本地版本控制系统相同的缺点,即它也有一个单点故障。
分布式版本控制系统
集中式版本控制系统使用一个中央服务器来存储所有的数据库和团队协作。但由于单点故障,也就是中央服务器的故障,开发者并不喜欢它。接下来,分布式版本控制系统被开发出来。
在分布式版本控制系统(如Git、Mercurial、Bazaar或Darcs)中,用户有一个版本库的本地副本。所以,客户不只是查看文件的最新快照,甚至他们可以完全镜像仓库。本地版本库包含主版本库中的所有文件和元数据。
DVCS允许自动管理分支和合并。它加快了除推送和拉动之外的大多数操作。DVCS增强了离线工作的能力,并且不依赖单一地点的备份。如果任何服务器停止工作,而其他系统通过它进行协作,那么任何一个客户库都可以由该服务器进行恢复。每次检查都是对所有数据的全面备份。
这些系统不一定依赖中央服务器来存储项目文件的所有版本。
集中式版本控制系统和分布式版本控制系统的区别
集中式版本控制系统是使用客户端/服务器架构的系统。在集中式版本控制系统中,一个或多个客户系统直接连接到一个中央服务器。与此相反,分布式版本控制系统是使用点对点架构的系统。
使用这两种版本控制系统有许多好处和坏处。让我们来看看集中式和分布式版本控制系统的一些重要区别。
集中式版本控制系统 | 分布式版本控制系统 |
---|---|
在CVCS中,资源库被放置在一个地方,向许多客户提供信息。 | 在DVCS中,每个用户都有一个本地版本的资源库,以代替服务器端的中央资源库。 |
它是基于客户端-服务器模式 | 它是基于客户端-服务器模式 |
它是基于中央存储库概念的最直接的系统 | 它是灵活的,并以每个人都有自己的存储库的概念出现 |
在CVCS中,服务器向全球的所有客户提供最新的代码 | 在DVCS中,每个用户都可以检查出代码的快照,他们可以完全镜像中央资源库 |
CVCS易于管理,并由其服务器从一个地方对用户和访问进行额外控制 | 与CVCS相比,DVCS的速度很快,因为你不必为每个命令与中央服务器进行交互 |
CVCS的流行工具是SVN(Subversion)和CVS | DVCS的流行工具是Git和Mercurial |
CVCS对初学者来说很容易理解 | DVCS对初学者来说有一些复杂的过程 |
如果服务器发生故障,任何系统都不能从另一个系统访问数据 | 如果任何服务器发生故障,而其他系统通过它进行协作,该服务器可以恢复任何客户的存储库 |