Answer the question
In order to leave comments, you need to log in
Benefits of Version Control Systems Alternative to SVN?
Please help me understand the benefits of Git/Bazaar/Mercurial/Darcs over SVN.
Everywhere they write only general words, such as "more flexible", "easier to use", etc. Yes, distribution is, perhaps, important, but only in very, very large projects (OS, office suite, ...). It has recently been argued that some version control systems are better at dealing with branches. Is it so?
What other advantages do these systems have over Subversion?
Answer the question
In order to leave comments, you need to log in
For a semi-humorous answer, listen to Linus Torvalds' presentation on git: Google Tech Talk: Linus Torvalds on git . It's funny, although very dogmatic - Linus considers any centralized VCS to be evil and a crime against humanity.
I myself have been actively working with SVN for several years - I encouraged the last company to switch to SVN with VSS, as a result of which administration also fell on me. Now I switched to Mercurial - and I'm very pleased, I'm not going back, simply because it gives everything that SVN gives plus a lot. From the advantages:
1) Reliability #1. Specifically in SVN, you often have to cleanup, unlock, solve problems like if someone accidentally moves a directory together with .svn, inconsistent trees (when subdirectory versions differ), etc. In Mercurial, I have not encountered this.
2) Reliability #2. A dead server in a centralized VCS is a serious problem; if there is no timely backup, it is a global catastrophe. In distributed systems, each clone is actually a backup of the entire repository.
3) Branches. Everyone who has worked with SVN knows what a terrible headache this is. It is really very easy to create them, to merge them is a terrible hemorrhoids. In distributed systems, this tends to be much simpler and more reliable.
4) Independence from the server. Very useful when working remotely.
5) Local check-ins (commits). With SVN, in order to save intermediate steps without breaking another working branch, you need to create your own branch, which you then merge (which, as you know, is not very convenient in SVN). In practice, I have observed that many simply do not commit until it works - sometimes it's days or even weeks of work. The question arises - what for then VCS is needed? In distributed systems, you can commit to the local repository as much as you like, at least 100 times a day, and when ready, push the changes to the shared repository.
6) Flexibility. Distributed systems provide several different ways to organize work, including working with a central repository (a la SVN), where everyone “surrenders” changes. At the same time, each developer or in groups can organize work in his own way. Centralized systems impose one way of working with a minimum of flexibility.
>Everywhere they write only general words, such as "more flexible", "easier to use", etc.
Yes, okay, full of very specific descriptions of how everything works there and how it compares to SVN.
> Yes, distribution is, perhaps, important, but only in very, very large projects
Distribution is convenient in absolutely any projects.
It is pointless to talk about it, you need to try it yourself.
We use Perforce. One of the important advantages for us over SVN is the presence of shelving. This is an opportunity to "put the code on the shelf" without having to submit the code to the repository; and this shelf can be seen by all other developers. Very handy for code review.
Even in Perforce, it's more convenient to work with change-lists.
In general, I believe that the choice between version control systems is often subjective. You should try different systems yourself to decide which features you really need and which tools you are most comfortable working with.
Try Git, Mercurial, or Subversion for yourself (6 months free).
KOMTET.PRO
PS: It's better to register 3 times with different data, choosing Git, Mercurial and Subversion and see.
PPS: And I did not advise you to do this)
More about git:
1) git is faster! much faster on all operations, except maybe checkout of the trunk from scratch;
2) There are non-obvious, but useful operations (git grep, git bisect, git archive), which are done in svn only by third-party utilities;
3) this is a free tool (this is in case you suddenly want to try some proprietary perforation).
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question