📅  最后修改于: 2020-12-13 13:44:42             🧑  作者: Mango
版本控制系统是一种软件,该软件可以跟踪一段时间内对一个文件或一组文件的更改,以便您以后可以调用特定的版本。它还允许您与其他程序员一起工作。
版本控制系统是一组软件工具,可帮助团队管理源代码中的更改。它使用一种特殊的数据库来跟踪对代码的每次修改。
开发人员可以将早期版本的代码与早期版本的代码进行比较,以解决错误。
版本控制系统对软件开发非常有帮助和有益;在不使用版本控制的情况下开发软件是不安全的。它提供了不确定性的备份。版本控制系统为开发人员提供了快速的界面。它还允许软件团队根据团队规模(包括更多开发人员)保留效率和敏捷性。
拥有版本控制系统的一些关键优势如下。
本地化版本控制方法由于其简单性而成为常用方法。但是这种方法导致更高的错误机会。用这种方法,您可能会忘记您所在的目录,并意外地将其写入错误的文件或将其复制到不需要的文件中。
为了解决此问题,程序员开发了具有简单数据库的本地VCS。这样的数据库将所有对文件的更改都保留在修订控制下。本地版本控制系统保留文件的本地副本。
本地VCS的主要缺点是它具有单点故障。
开发人员需要与其他系统上的其他开发人员进行协作。在这种情况下,本地化版本控制系统失败。为了解决这个问题,开发了集中版本控制系统。
这些系统具有包含版本文件的单个服务器,以及一些用于从中央位置检出文件的客户端。
集中式版本控制系统具有许多优点,尤其是相对于本地VCS。
它也具有与本地版本控制系统相同的缺点,即它也具有单点故障。
集中式版本控制系统使用中央服务器来存储所有数据库和团队协作。但是由于单点故障(这意味着中央服务器出现故障),开发人员不喜欢它。接下来,开发分布式版本控制系统。
在分布式版本控制系统(例如Git,Mercurial,Bazaar或Darcs)中,用户具有存储库的本地副本。因此,客户端不仅可以签出文件的最新快照,甚至可以完全镜像存储库。本地存储库包含主存储库中存在的所有文件和元数据。
DVCS允许自动管理分支和合并。除了推动和拉动,它可以加快大多数操作的速度。 DVCS增强了脱机工作能力,并且不依赖单个位置进行备份。如果任何服务器停止并且其他系统正在通过它进行协作,则该服务器可以恢复任何客户端存储库。每次签出都是所有数据的完整备份。
这些系统不必依赖中央服务器来存储项目文件的所有版本。
集中式版本控制系统是使用客户端/服务器体系结构的系统。在集中式版本控制系统中,一个或多个客户端系统直接连接到中央服务器。相反,分布式版本控制系统是使用对等体系结构的系统。
同时使用版本控制系统有很多优点和缺点。让我们看一下集中式和分布式版本控制系统之间的一些重要区别。
Centralized Version Control System | Distributed Version Control System |
---|---|
In CVCS, The repository is placed at one place and delivers information to many clients. | In DVCS, Every user has a local copy of the repository in place of the central repository on the server-side. |
It is based on the client-server approach. | It is based on the client-server approach. |
It is the most straightforward system based on the concept of the central repository. | It is flexible and has emerged with the concept that everyone has their repository. |
In CVCS, the server provides the latest code to all the clients across the globe. | In DVCS, every user can check out the snapshot of the code, and they can fully mirror the central repository. |
CVCS is easy to administrate and has additional control over users and access by its server from one place. | DVCS is fast comparing to CVCS as you don’t have to interact with the central server for every command. |
The popular tools of CVCS are SVN (Subversion) and CVS. | The popular tools of DVCS are Git and Mercurial. |
CVCS is easy to understand for beginners. | DVCS has some complex process for beginners. |
If the server fails, No system can access data from another system. | if any server fails and other systems were collaborating via it, that server can restore any of the client repositories |