Преимущества систем контроля версий, альтернативных SVN?

Пожалуйста, помогите разобраться в преимуществах Git/Bazaar/Mercurial/Darcs перед SVN.


Всюду пишут только общие слова, типа «более гибкая», «более простая в использовании» и тп. Да, распределенность — это, пожалуй, важно, но только в очень-очень крупных проектах (ОС, офисный пакет, ...). Недавно высказывалось мнение, что в некоторых системах контроля версий более удачно реализована работа с ветками. Так ли это?


Какие еще есть преимущества у названных систем перед Subversion?
  • Вопрос задан
  • 10387 просмотров
Решения вопроса 2
Zigmar
@Zigmar
В качестве полуюморного ответа послушайте презентацию Линуса Товардса про git: Google Tech Talk: Linus Torvalds on git. Смешно, хотя очень догматично — Линус считает любую централизованную VCS злом и преступлением против человечества.

Сам я, несколько лет активно работал с SVN — последнюю фирму я сподвигнул перейти на SVN c VSS, в результате чего администрирование тоже свалилось на меня. Сейчас перешел на Mercurial — и очень доволен, возвращается не собираюсь, просто потому он дает все то, что дает SVN плюс много. Из преимуществ:

1) Надежность #1. Конкретно в SVN часто приходится делать cleanup, unlock, решать проблемы вроде той, если кто-то случайно переносит директорию вместе .svn, неконсистентные деревья (когда версии поддиректорий отличаются) и т.д. В Mercurial я с таким не сталкивался.
2) Надежность #2. Умерший сервер в централизованной VCS — это серьёзная проблема, при отсутствие своевременного бекапа — это глобальная катастрофа. В распределенных системах — каждый клон — это фактически бекап всего репозитория.
3) Ветки. Все кто работал с SVN, знает какая это страшная головная боль. Создавать их действительно очень лего, мержить — страшный геморрой. В распределенных системах это, как правило, намного проще и надежнее.
4) Независимость от сервера. Очень полезно при удаленной работе.
5) Локальные чек-ины (коммиты). С SVN, чтоб сохранять промежуточные шаги, не ломая другим рабочую ветку, надо создавать свою ветку, которую потом мержить (что в SVN, как известно, не слишком удобно). На практике, я наблюдал, что многие просто не коммитят, пока не заработает — иногда это дни или даже недели работы. Возникает вопрос — нафига тогда VCS нужна? В распределенных системах можно в локальный репозиторий коммитить сколько душе угодно, хоть 100 раз в день, а когда готово, сделать push изменений в общий репозиторий.
6) Гибкость. Распределенные системы дают несколько разных способов организации работы, включая работу с центральным репозиторием (а-ля SVN), куда все «сдают» изменения. При этом, каждый у себя или в группах девелоперы могут организовывать работу по своему. Централизованные системы навязывают один способ работы с минимум гибкости.
Ответ написан
Комментировать
DevMan
@DevMan
git:
1. намного удобнее работать с ветками (описывать много, да и не раз описывалось, надо просто попробовать).
2. не засирает каждую директорию своей служебной информацией.
3. gitolite (сторонняя тулза, но весьма простая в установке и конфигурировании) решает все проблемы с доступом по ssh и правами на чтение запись вплоть до отдельного файла.

Это основные преимущества для меня, но не единственные.
Если владеете английским, рекомендую для ознакомления whygitisbetterthanx.com
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
@gro
>Всюду пишут только общие слова, типа «более гибкая», «более простая в использовании» и тп.
Да, ладно, полно совершенно конкретных описаний как там всё устроено и как это в сравнении с SVN.

>Да, распределенность — это, пожалуй, важно, но только в очень-очень крупных проектах
Распределённость удобна в абсолютно любых проектах.
Об этом бессмысленно расказывать, это нужно попробовать самому.
Ответ написан
Комментировать
Shedal
@Shedal
Мы пользуемся Perforce. Одно из важных для нас преимуществ перед SVN — наличие shelving. Это возможность «положить код на полку» без того, чтобы сабмиттить код в репозиторий; и эту полку могут видеть все остальные разработчики. Очень удобно для code review.
Еще в Perforce более удобная работа с change-list'ами.

А вообще, я считаю, что выбор между системами контроля версий зачастую субъективен. Вам стоит самому попробовать разные системы, чтобы принять решение о том, какие функции вам действительно нужны, и с какими инструментами вам самому удобнее работать.
Ответ написан
Попробуйте. Перешел с SVN на Git, везде где мог. Счастье — есть.
Ответ написан
Комментировать
IMA
@IMA
Попробуйте Git, Mercurial или Subversion сами (бесплатно 6 мес.).
KOMTET.PRO
PS: Лучше 3 раза зарегистрироваться с разными данными, выбирая Git, Mercurial и Subversion и посмотреть.
PPS: И я Вам этого не советовал )
Ответ написан
Комментировать
tampere
@tampere
Ещё про гит:
1) гит быстрее! намного быстрее на всех операциях, кроме, может быть, чекаута транка с нуля;
2) Есть неочевидные, но полезные операции (git grep, git bisect, git archive), которые в svn делаются только сторонними утилитами;
3) это свободный инструмент (это на случай, если вдруг захочется попробовать какой-нибудь проприетарный перфорс).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы