Content deleted Content added
Only1fauzan (talk | contribs) m I added info on Distributed Version Control, highlighting its features, advantages, and the impact it has had on software development. The page covers the basics of DVC, its benefits over centralized systems, the leading example of Git, and the endorsement of DVC by industry figures like Joel Spolsky. It emphasizes the transformative effect DVC has had on collaboration, workflow management, and the overall pace of software development. Tags: Reverted Visual edit Newcomer task |
m Reverted edits by 185.181.109.220 (talk) (AV) |
||
(21 intermediate revisions by 18 users not shown) | |||
Line 1:
{{Short description|Software engineering tool}}
[[File:Git session.svg|thumb|The process of initializing a git repository. Git is one of the most popularly used distributed version control software.]]
In [[software development]], '''distributed version control''' (also known as '''distributed revision control''') is a form of [[version control]] in which the complete [[codebase]], including its full history, is mirrored on every developer's computer.<ref name="git-scm">{{cite book | chapter = About version control | chapter-url = https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control | title = Pro Git | first1 = Scott | last1 = Chacon | first2 = Ben | last2 = Straub | edition = 2nd | date = 2014 | publisher = Apress | at = Chapter 1.1 | access-date = 4 June 2019}}</ref> Compared to '''centralized version control''', this enables automatic management [[Branching (version control)|branching]] and [[Merge (version control)|merging]], speeds up most operations (except pushing and
In 2010, software development author [[Joel Spolsky]] described distributed version control systems as "possibly the biggest advance in software development technology in the [past] ten years".<ref name="Joel 2010">{{cite web
Line 12 ⟶ 13:
==Distributed vs. centralized==
Distributed version control systems (DVCS) use a [[peer-to-peer]] approach to [[version control]], as opposed to the [[client–server model|client–server]] approach of centralized systems. Distributed revision control synchronizes repositories by transferring [[Patch (Unix)|patches]] from peer to peer. There is no single central version of the codebase; instead, each user has a working copy and the full change history.
'''Advantages of DVCS (compared with centralized systems) include:'''
* Allows users to work productively when not connected to a network.
* Common operations (such as commits, viewing history, and reverting changes) are faster for DVCS, because there is no need to communicate with a central server.<ref name='OSullivan'>{{cite web
Line 28 ⟶ 29:
* On [[FOSS]] software projects it is much easier to create a [[Fork (software development)|project fork]] from a project that is stalled because of leadership conflicts or design disagreements.
'''Disadvantages of DVCS (compared with centralized systems) include:'''
* Initial checkout of a repository is slower as compared to checkout in a centralized version control system, because all branches and revision history are copied to the local machine by default.
* The lack of locking mechanisms that is part of most centralized VCS and still plays an important role when it comes to non-mergeable binary files such as graphic assets or too complex single file binary or XML packages (e.g. office documents, PowerBI files, SQL Server Data Tools BI packages, etc.).{{citation needed|date=January 2018}}
Line 41 ⟶ 42:
{{Expand section|date=June 2008}}
===Central and branch repositories===
Line 56 ⟶ 57:
Once the pull request is reviewed and approved, it is merged into the repository. Depending on the established workflow, the code may need to be tested before being included into official release. Therefore, some projects contain a special branch for merging untested pull requests.<ref name="ossw" /><ref>{{cite web|title=Making a Pull Request|url=https://www.atlassian.com/git/tutorials/making-a-pull-request|publisher=Atlassian|access-date=27 March 2016}}</ref> Other projects run an automated test suite on every pull request, using a [[continuous integration]] tool, and the reviewer checks that any new code has appropriate test coverage.
==History==
Line 97 ⟶ 75:
* [[BitKeeper]]
* [[GNU Bazaar]]
* [[Darcs]]
* [[Concurrent Versions System]], a predecessor of distributed version control systems
* [[TortoiseHg]], a graphical interface for Mercurial
|