С одной стороны, интеграция SVN (с IDE, фреймворками, вики, ...) очень зрелая, так же как и ее GUI и браузеры кода (даже несмотря на то, что DVCS, такие как Git и Mercurial, прогрессируют ежедневно).
С другой стороны, внедрение DVCS в корпоративную среду по-прежнему не является тривиальной задачей:
Просто для ясности: использование DVCS может быть очень правильным выбором:
StackOverflow (не проект с открытым исходным кодом) использует Mercurial (см. HgInit, написанный Джоэлом Спольски).
Они перешли с SVN на DVCS:
, а также потому, что средства слияния DVCS гораздо более продвинуты, чем в SVN.
(что им необходимо для поддержки множества параллельных слегка отличающихся версий своей кодовой базы между сайтами SO, сайтами StackExchange V1 и V2, Area 51, ...)
См. « различия между DVCS и CVCS » или « Каковы преимущества Mercurial или git по сравнению с svn для ветвления/слияния? ».
Для корпоративной среды (где я нахожусь), любой переход любого рода не является тривиальным, потому что он должен быть:
Таким образом, DVCS также может быть очень полезен в корпоративная среда:
(См. « Уровень корпоративного внедрения Git? » или « Система управления версиями на основе Git на предприятии: предлагаемые инструменты и методы? ».)
Его (даже для новых проектов) просто не так легко внедрить, как в меньшей структуре или в среде с открытым исходным кодом.
Я не знаю никаких внутренних причин для предпочтения централизованных систем контроля версий, существует множество внешних факторов, таких как устаревшие системы, управленческая инерция, кривая обучения и т. д.
DVCS в значительной степени демонстрирует себя как «лучшую мышеловку».
Подрывная деятельность идеальна, когда идеальна централизованная парадигма.
Одна из таких ситуаций — работа с документами. Гораздо разумнее просто сохранить одну мастер-копию, из которой все будут извлекать данные. Мы не хотим создавать ветки или теги. Мы просто хотим отслеживать, кто вносит изменения, а затем распространять их на всех авторов.
Мы используем subversion в качестве хранилища для данных, слияние которых нетривиально (мы занимаемся разработкой аппаратного обеспечения, а файлы дизайна имеют недокументированный двоичный формат). Преимущество SVN заключается в том, что вы можете устанавливать блокировки файлов, поэтому только один разработчик может работать с файлом, а также вынужден проверять самый новый файл перед редактированием.
Вы можете использовать как Git, так и Hg в качестве клиентов SVN. Это означает, что вы можете получить лучшее из обоих миров.
Однако вы не можете использовать SVN в качестве клиента ни для Git, ни для Hg.
Во многих отношениях идеальным случаем является центральный репозиторий SVN, в котором пользователи используют в качестве клиента любую DVCS, которая им нравится.
SVN намного проще в освоении и использовании для многих людей, а ее инструменты гораздо более зрелые.
Я думаю, что Subversion по-прежнему работает лучше, чем Mercurial и Git, для больших файлов, таких как медиаресурсы, файлы Photoshop, композиции After Effects и т. д. Я помню, как Линус Торвальдс упоминал большие файлы как одну из очень немногих потенциальных проблем с Git в это Google Tech Talk. Mercurial имеет несколько расширений для хранения больших файлов вне репозитория. Таким образом, кажется, что они оба страдают от некоторого снижения производительности и/или других проблем в этом сценарии.
Subversion, с другой стороны, используется в текущем Blender Open Movie Project. Я не думаю, что они используют его для хранения отрендеренных кадров, так как это будет как минимум несколько гигабайт данных для каждого прохода рендеринга. Но, тем не менее, со всеми 3D-сценами, объектами, ригами, текстурами и скриптами это по-прежнему один большой репозиторий со множеством больших файлов.
Я вижу причины, по которым вы могли бы продолжать использовать SVN, если вы использовали его в течение длительного времени. Переход с SVN на git или Mercurial, особенно в небольшой компании или кружке программистов, когда вы, возможно, не используете какие-либо из их более мощных функций, может заставить вас отказаться от перехода. Как отметил Тило, крупная компания, использующая SVN, сочтет это изменение монументальным.
Кроме того, я думаю, что у SVN все еще есть место, особенно когда дело доходит до обучения контролю версий. Но это взято из моего личного опыта изучения SVN в университете, а не самообучения git, поэтому мое мнение не будет объективным.
При этом, если бы вы запускали репозиторий с с нуля, я не могу придумать условий, при которых вы могли бы решить, что SVN абсолютно необходим. Возможно, при работе с устаревшими системами.
или старые пользователи ;)
Настоящий вопрос заключается не в SVN и Git/Mercurial, а в распределённости или централизованности. Централизованный может быть лучше в некоторых ситуациях, таких как корпоративная среда, где вам нужен жесткий контроль и тщательное ведение журнала.