I have been following up the hype with Git and DVCS lately. Well.. to be honest, i didn’t know that DVCS existed until i heard of Git. I always thought Centralized version control is the only one choice we all had. (Oh..thats what the name of the category which CVS, Subversion belongs??!!!!)
Subversion is the super-simple configuration management tool i ever worked with. Even though i am starting to appreciate clearcase, i am very happy to keep goodold subversion for my pet projects.
I have seen developers who dread committing their code. Why? Because, they keep working on their tiny little bug too long and the LATEST code base is already couple of versions ahead. So when they try to commit, it fails asking them to merge before. And ofcourse if you lucky, the trivial merge is very well managed by the tool itself. Non-trivial merges needs to be done manually with your whole of consciousness. This is where many have problems i think. I know this shouldnt be too hard if you know your code or atleast the few lines that you added/modified in your fix. But if some other fix involves modifying exact same region of your code, you have to sit with the other developer to agree to merge (or even redo sometimes) so that both fixes are in. For me, this already sets the bar up in your understanding and hence the maturity.
When i was reading through DVCS and DAGs, i loved the way Eric takes you along the route and to the situation you end up in

This is lovely. This means each member your team already has a better understanding of SCM and which ones (node) they work with. They have the control when to take others changes and when to merge with others.
In Subversion also you can have this kind of situation, where you create a branch for every fix you work with. And you merge to the main branch when you are ready (you of course have to merge if some others have merged their branches into the main branch before you).
But on a node level? It is cool..
I think DVCS is the natural way to progress in SCM. So if you use Subversion and think your team members are adults enough to resolve conflicts, you can promote them by switching to DVCS.
I am sure they would love it for the benefits..
Ofcourse, Its a matter of taste and you can choose how you like.
As Eric says,
- Those who handle this problem in ways that I like.
- Those who handle this problem in ways that I do not like.
And, My opinion,
- Those who thinks resolving conflicts is a nightmare
- Those who loves resolving the conflicts just as they fix a nasty bug
What do you think?