Ответы пользователя по тегу Системы контроля версий
  • Преимущества систем контроля версий, альтернативных SVN?

    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), куда все «сдают» изменения. При этом, каждый у себя или в группах девелоперы могут организовывать работу по своему. Централизованные системы навязывают один способ работы с минимум гибкости.
    Ответ написан
    Комментировать