Subversion, более или менее значительный багфикс для CVS, имеет те же проблемы с объединением, что и CVS. Оба были разработаны для действительно простых случаев слияния, а не того, что мы используем сегодня (сотни людей работают над одной и той же кодовой базой, каждая из которых имеет немного отличную версию).
Git и другие современные DVCS были разработаны для решения этой проблемы (плюс часть распределенной VCS). Git поставляется с множеством различных алгоритмов слияния, и легко создать новый. Но я думаю, что было бы трудно придумать сценарий, которого разработчики ядра Linux еще не видели;)
Из моего личного опыта, Git - хороший инструмент, если вы забываете больше всего, что вы знаете о SVN. В противном случае, вы попытаетесь применить свои знания SVN / CVS, и это просто не будет работать. Сядьте, поработайте над учебниками и по-настоящему начните работать так, как будто вы никогда раньше не видели VCS. Например, я попытался поместить несколько проектов в один репозиторий.