correct me if im wrong, but isn't distributed SCMs for OS projects while centralized SCMs are better for corporate/private projects?
cause with eg. mercurial anyone gets an exact copy of the repository with FULL history features, while with centralized you only get the latest working copy.
im more focused on private projects so i wonder if its better with centralized SCMs or doesnt it matter?
What Is Mercurial? Mercurial is a free, distributed version control system. It's also referred to as a revision control system or Mercurial source control. It is used by software development teams to manage and track changes across projects.
Mercurial is a free, distributed source control management tool. It offers you the power to efficiently handle projects of any size while using an intuitive interface.
On February 1, 2020, users will no longer be able to create new Mercurial repos. Developers have mused about the death of Mercurial for years as Git adoption has soared, despite Mercurial's ongoing use at companies like Facebook, Google, and Mozilla.
You can use a DVCS (like mercurial) in large corporation.
The limits of a DVCS compared to a VCS are essentially:
That said, DVCS allows for a new way to publish (pull/pull) data, which can help for inter-teams "pre-deliveries" (when a team want to share development even though there are still in progress and not yet officially committed to the central repository): you become a passive produced and an active consumer.
Tomislav Nakic-Alfirevic asks in the comments:
Could you illustrate your second point comparing a DVC with a centralized one?
The right access management is tricker, especially if the large corporation:
In those cases, that means:
Git for instance is a bit too simple to answer directly large corporation concerns:
People new to git (meaning, I was suggesting enhancements like this when I started too ;)) frequently talk about adding this feature or that feature, without realising that git really is very very simple.
It has files, directories, commits, tags and that's it.
It's power over centralized solutions is the lack of surrogate identifiers such as a branch path, server assigned sequence number, etc.Yes, there could be more relationships and metadata to represent a whole lot of things.
Per-file history and merging, directory renaming, cherry picking, reverting.
But these all add complications to the basic model, which has already shown itself to be capable of dealing with these things - with caveats.
But the pay-off - simplicity - is well worth those caveats.
No, definitely not. This suggestion that DVCSes would not be suitable for the enterprise is pertinently false, a common FUD argument from people who for whatever reason have a desire not to abandon SVN.
In actuality, also in enterprise settings DVCSes give you many benefits:
With regard to that last one, you can give seasoned developers direct push access to the main repository, while for new or junior members their mentor pulls from them and review their changes before pushing them.
Tying in to the discussion in the answer above; in this way DVCSes give you more control over your repository, while with SVN generally the only real workable model is to give all contributors commit access to at least parts of the code.
You may have less fine-grained control over permissions for sections with the code, however you can give different groups (e.g. documentation team) their own clone of the main repository, and merge it back periodically after review. Or put the documentation in a whole different repository altogether.
Often you need to un-learn practices you learned with centralized VCSes, go back to the use cases and what it is that you want to do, and then consider how a DVCS could empower this.
A very good article to read to get insight in the differences between version control systems is Making Sense of Revision-Control Systems.
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