Distributed version control: Difference between revisions

Content deleted Content added
Better distinction between the technology and a common usage pattern.
grammar fix
Line 44:
 
===Central and branch repositories===
In a truly distributed project, such as [[Linux]], every contributor maintains their own version of the project, with different contributors hosting their own respective versions and pulling in changes from other users as needed, resulting in a general consensus emerging from multiple different nodes. This also makes the process of "forking", easy, as all that is required is one contributor stop accepting pull requests from other contributors and letting the codebases gradually grow apart.
 
This arrangement, however, can be difficult to maintain, resulting in many projects choosing to shift to a paradigm in which one contributor beingis the universal "upstream", a repository from whom changes are almost always pulled. Under this paradigm, development is somewhat recentralized, as every project now has a central repository that is informally considered as the official repository, managed by the project maintainers collectively. While distributed version control systems make it easy for new developers to "clone" a copy of any other contributor's repository, in a central model, new developers always clone the central repository to create identical local copies of the code base. Under this system, code changes in the central repository are periodically synchronized with the local repository, and once the development is done, the change should be integrated into the central repository as soon as possible.
 
Organizations utilizing this centralize pattern often choose to host the central repository on a third party service like [[GitHub]], which offers not only more reliable [[uptime]] than self-hosted repositories, but can also add centralized features like [[issue trackers]] and [[continuous integration]].