集中式与分布式版本控制的区别

集中式与分布式版本控制的区别

当涉及到与多个开发人员在一个项目上合作并与他们协作时,我们中的许多人都知道版本控制。毫无疑问,版本控制使开发人员的工作更加轻松快捷。在大多数组织中,开发人员要么使用集中式版本控制系统 (CVCS),例如 Subversion(SVN),要么使用并发版本控制系统 (CVS),或者使用分布式版本控制系统 (DVCS),例如 Git(用 C 编写)、Mercurial(用 Python 编写) 或 Bazaar(用 Python 编写)。

现在进入正题,哪一个是比较好的?或者我们需要选择哪一个? 我们将比较每个人的工作流程、学习曲线、安全性、受欢迎程度和其他方面。

首先,需要打破大多数初学者对 DVCS 的误解,即“代码中没有中央版本或没有主分支”。这不是真的,在 DVCS 中,代码中还有一个主分支或中央版本,但它的工作方式与集中式源代码控制不同。

集中式与分布式版本控制的区别

让我们看一下这两个版本控制系统的概述。

集中式版本控制系统

在集中式源代码控制中,有一个服务器和一个客户端。服务器是包含所有代码版本的主存储库。要处理任何项目,首先用户或客户端需要从主存储库或服务器获取代码。因此客户端与服务器通信并将所有代码或代码的当前版本从服务器拉到他们的本地机器。换句话说,我们可以说,您需要从主存储库中获取更新,然后在系统中获取代码的本地副本。因此,一旦您获得了最新版本的代码,您就可以开始对代码进行自己的更改,之后,您只需将这些更改直接提交到主存储库中。提交更改只是意味着将您自己的代码合并到主存储库或制作源代码的新版本。所以一切都集中在这个模型中。

将只有一个存储库,它将包含代码的所有历史或版本以及代码的不同分支。因此,集中式源代码控制中涉及的基本工作流程是从包含其他人代码的中央存储库中获取最新版本的代码,在代码中进行自己的更改,然后将这些更改提交或合并到中央存储库中.

分布式版本控制系统

在分布式版本控制中,大多数机制或模型与集中式应用相同。您会在这里发现的唯一主要区别是,这里的每个开发人员或客户都有自己的服务器,而不是作为服务器的单个存储库,他们将拥有整个历史或代码版本及其所有分支的副本在他们的本地服务器或机器上。基本上,每个客户端或用户都可以在本地工作并断开连接,这比集中式源代码控制更方便,这就是它被称为分布式的原因。
您不需要依赖中央服务器,您可以将整个历史记录或代码副本克隆到您的硬盘上。因此,当您开始处理项目时,您从自己的硬盘驱动器中的主存储库中克隆代码,然后从自己的存储库中获取代码以进行更改,在进行更改后,您将更改提交到本地存储库并在此时,您的本地存储库将具有“更改集”,但它仍然与主存储库断开连接(主存储库将具有来自每个开发人员存储库的不同“更改集”),因此要与它通信,您发出请求主存储库并将您的本地存储库代码推送到主存储库。从存储库获取新更改称为“拉取”,合并本地存储库的“更改集”称为“推送”。
它不遵循在进行更改后直接将代码通信或合并到主存储库的方式。首先,您在自己的服务器或存储库中提交所有更改,然后“更改集”将合并到主存储库。

下图可以更好地理解这两者之间的区别:

集中式与分布式版本控制的区别

集中式与分布式版本控制的区别

  • 集中式版本控制比分布式更容易学习。如果是初学者,则必须记住 DVCS 中所有操作的所有命令,并且在 DVCS 上工作一开始可能会令人困惑。CVCS 易于学习和设置。
  • DVCS 最大的优势在于它允许离线工作并提供灵活性。在自己的硬盘驱动器中拥有代码的全部历史记录,因此要在自己的服务器或自己的存储库中进行所有更改,不需要互联网连接,但 CVCS 情况并非如此。
  • DVCS 比 CVCS 更快,因为不需要为每个命令与远程服务器通信。可以在本地完成所有工作,这比 CVCS 工作得更快。
  • 在 DVCS 中处理分支很容易。每个开发人员都有完整的 DVCS 代码历史记录,因此开发人员可以在将所有“更改集”合并到远程服务器之前共享他们的更改。在 CVCS 中,在分支上工作既困难又耗时,因为它需要直接与服务器通信。
  • 如果项目历史悠久或项目包含大型二进制文件,在这种情况下,在 DVCS 中下载整个项目可能会比平时花费更多的时间和空间,而在 CVCS 中你只需要获取几行代码,因为你不需要’不需要将整个历史记录或整个项目保存在您自己的服务器中,因此不需要额外的空间。
  • 如果主服务器出现故障或在 DVCS 中崩溃,仍然可以从已保存代码完整修订版的本地存储库或服务器获取代码的备份或整个历史记录。这不是 CVCS 的情况,只有一个远程服务器具有完整的代码历史记录。
  • 在 DVCS 中与其他开发人员代码的合并冲突较少。因为每个开发人员都在编写自己的代码。与 DVCS 相比,CVCS 中的合并冲突更多。
  • 在 DVCS 中,有时开发人员利用拥有整个代码历史的优势,他们可能会孤立地工作太久,这不是一件好事。这不是 CVCS 的情况。

结论: 让我们看看 DVCS 和 CVCS 在全球的流行程度。

集中式与分布式版本控制的区别

从 Google Trends 和以上几点来看,很明显 DVCS 比 CVCS 更有优势,更受欢迎,但如果需要谈论选择版本控制,那么也要看哪个更方便学习,如果是初学者,那么可以选择其中任何一个,但只要按照使用其命令的流程进行操作,DVCS 就会带来更多好处。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程