It seems that many people read about distributed version control and implicitly understand why it is a good thing for open source development, with many distributed developers all acting independently and in accordance with their own choices instead of mandate from management. But from this impression many people form the idea that DVCS is useful only in an open-source environment; they can't see how it would help an organization that releases a proprietary product and doesn't make its version control system accesible externally, or how it would help a single developer.
What are some benefits a business can see if it chooses to use distributed version control such as git, darcs, or Mercurial instead of centralized version control such as CVS or Subversion?
Version control systems allow multiple developers, designers, and team members to work together on the same project. It helps them work smarter and faster! A version control system is critical to ensure everyone has access to the latest code and modifications are tracked.
Unlike a centralized VCS, a distributed version control system enables every user to have a local copy of the running history on their machine, so if there's an outage, every local copy becomes a backup copy and team members can continue to development offline.
Here is what many cite as distributed source control system advantages compared to other systems like centralized version control: Branching and merging can happen automatically and quickly. Developers have the ability to work offline. Multiple copies of the software eliminate reliance on a single backup.
Benefits of version control systems. Using version control software is a best practice for high performing software and DevOps teams. Version control also helps developers move faster and allows software teams to preserve efficiency and agility as the team scales to include more developers.
The argument seems backwards to me.
Given that a centralized revision control system is just one of many use cases of a distributed system, how does applying such a restriction benefit the company?
I know from experience that when a p4 server gets slow or breaks or you get too far away from it or something, everybody who's using it has to stop working.
People like to treat the "plane" argument as a bit of a strawman, but I've been there where it really mattered. On site at an interop event or customer demo where we have to build something now in an environment with limited network support and all that work has to come back and I want to be able to revert when I make mistakes.
The two arguments that I've heard don't ring well to me:
Number 1 is just stupid. Maybe it's slightly harder to get the full history (and if I can't, there's not a revision control system anyway), but when it comes to the kind of fear we're talking about here, I can just grab the latest revision and it's just as dangerous.
Number 2 really seems like trying to use the wrong tool for the job. I used to get anti-CVS arguments from RCS users because they really thought you should lock every file every time to prevent two people from, I don't know, working.
Communication is out of band. If you have large, unmergeable files, it's OK to talk about them, I think. IMO, many of the people with this problem don't want a revision control system, but a snapshotting filesystem (zfs, 9fs, Drop Box, etc...).
In general, though, I don't understand why people even ask the "Why should I give my developers tools that are cheaper, faster, more reliable, more robust, and make them more productive?" kinds of questions.
I agree with VonC, but would like to add that (in git at least) it's trivial to make new branches where I can easily work on experimental code or prototypes that I don't necessarily want to share with the rest of the repository's users. This helps keep the central repository clean (if you use one) and I think frees up developers to try things they might not otherwise try in a system where you risk putting experimental code into the central repository.
I've also noticed that working in multiple branches with git is a lot more productive since swapping between branches is quick and I don't have to multiple branches checked out at once in separate directories.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With