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

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


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


Какие еще есть преимущества у названных систем перед Subversion?
  • Вопрос задан
  • 9535 просмотров
Решения вопроса 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) это свободный инструмент (это на случай, если вдруг захочется попробовать какой-нибудь проприетарный перфорс).
Ответ написан
Ваш ответ на вопрос

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

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