Для меня одна из главных вещей, которую вы можете сделать в DVCS, например, git, который не работает в SVN, заключается в следующем:
1) Создайте несколько веток разработки из ствола для различных функций, находящихся в разработке.
2) Объединить код из одной ветви функции в другую ветку функции до того, как любая ветка функции будет завершена и готова к объединению в транк.
3) Позже объедините ветви объектов в ствол.
Приятно разбивать новые функции на отдельные ветви, чтобы магистраль оставалась чистой, пока функции не будут завершены. Но вы неизбежно сталкиваетесь с ситуацией, когда команда, работающая над одной веткой функций, написала некоторый код, который необходим команде из другой ветки функций. Если вы объедините этот код в ветвях функций с SVN, позже у вас возникнут проблемы с объединением в транк. Git избегает этой проблемы.
Вот еще одно преимущество ... Ваша компания решает передать разработку компонента индийской подрядной компании. Или ваша группа профессиональных услуг должна добавить функцию для клиента, и эта функция может быть реализована в будущем. Вы действительно не хотите предоставлять доступ на запись к вашему SVN индийскому подрядчику или вашей группе PS. Таким образом, им приходится создавать код вне системы контроля версий, и вы должны объединить его в себе, самостоятельно обнаруживать и разрешать любые конфликты без какой-либо помощи со стороны SVN и терять всю историю регистрации подрядчиков в процессе.
Но с помощью git вы просто предоставляете подрядчику или вашей группе PS копию репозитория, и они могут сделать это, как разработчик. Позже вы можете использовать функции git для объединения изменений в свой репозиторий git. Git найдет конфликты и сохранит историю.
Наконец, одна из самых крутых вещей в git заключается в том, что вам действительно не нужно убеждать своего друга, что он лучше, чем SVN. Поскольку git так хорошо интегрируется с SVN, ваша компания / друг может с удовольствием использовать SVN, а вы с удовольствием используете git, подключенный к SVN.