Subversion всегда был удобен такими фичами как, атомарные commits,
версионированные директорий, хорошая поддержка бинарных файлов, быстрое создание
бранчей и тагов, поддержка нескольких сетевых протоколов, в том числе и HTTP.
Но, чего действительно раньше не хватало в subversion, так это возможности найти
какой код был смержен, откуда он мержился и когда это
произошло. Отсутствие такой возможности приводило раньше к трудностям при мерже:
К примеру, пользователь не сможет смержить изменения с 11 по 17 ревизию в
бранч, если он уже мержил 11 и 13 ревизии в бранч ранее. В новом
subversion мержи логируются и нет больше необходимости записывать на листик,
какой код, когда и откуда мержился.
Разработчики subversion как будто услышали мои мольбы и добавли
change lists –функционал, позволяющий ассоциировать
произвольные файлы с неким человекочитаемым именем. К примеру вы работаете над
несколькими багами одновременно, и по окончании одного из них хотите залить его
в репозиторий. А файлы, относящиеся к другому фиксу – оставить в локальном
репозитории. Раньше приходилось прибегать к помощи листика, чтобы разделить эти
два набора файлов и залить только нужные файлы. Теперь проассоциировав первый
набор файлов с неким именем, вы можете по окончанию работ просто указать имя
этой группы файлов и они немедленно попадут в основной репозиторий.
Еще одна полезность, появившаяся в 1.5 subversion – это sparse
checkouts, позволяющий выполнять основные операции только над
указанными уровнями дерева каталогов. Это удобно, если вы не хотите “слить”
только текущий каталог со всеми файлами в нем, но не хотите “сливать” все его
поддиректории.
Также было добавлено интерактивное разрешение конфликтов –
теперь svn сам предлагает варианты решения конфликта. Лично для меня эта фича
никакой погоды не делает, так как я давно пользуюсь Araxis Merge,
чего и вам советую.
Не знаю почему, но большинство GIT’овцев кричат: SVN sucks, попробуйте GIT
– у нас проект в жите 2.5 гига и ничего не тормозит. У меня, я вам скажу, есть
проект около 4 гигабайтов в архиве. То есть сжатый RAR’ом. И я никаких тормозов
не наблюдал еще с версии 1.4.6. А в версии 1.5 ускорена работа
из-за простого трюка – они сделали более многовложенную файловую систему, т.е. в
одной директории такого дикого количества файлов уже не будет. И это важно,
особенно, если ваш сервер хранит репозиторий на Network Attach Storage с не
самой продвинутой файловой системой, которая тормозит при 10 000 файлов. Из-за
того что в subversion файлы readonly, это позволяет улучшить стратегию
кэширования на стороне NAS’ов и других умных файловых систем. Теперь
неизменяемые файлы сгруппированны в каталоги, и вашей файловой системе можно
сказать: вот эти каталоги неизменяемы (после появления файлов в ней) и ты
пожалуйста это учти.
Разработчики клянуться, что теперь заработает CTRL+C!
Появилась возможность задавать относительные пути, которые
могут быть полезны, если вы не хотите плодить какие-то сторонние библиотеки в
нескольких проектах, но хотите иметь их локально.
Как мы видим, управлять репозиторием теперь станет легче, работать он будет
быстрее, а разработчики перестанут записывать на листике, что и когда
они мережили ;)
Ссылки по теме
Subversion 1.5 Release Notes
Subversion: чеклист по правильным коммитам
Слияние: Руководство по ежедневному использованию
Merging and branching in Subversion 1.5
Subversion
or CVS, Bazaar or Mercurial?