T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию книги "Среда разработки Eclipse 4: Руководство разработчика"

Командная разработка кода

Subversion

Система управления версиями Subversion (SVN) (http://subversion.apache.org/) является следующей ступенью развития системы CVS, устраняющей такие недостатки системы CVS как невозможность управления версиями каталогов, отсутствие атомарности многообъектных фиксаций, учета копирования, перемещения и переименования ресурсов в истории, отсутствие поддержки наборов изменений.

Кроме того, в системе Subversion вводятся свойства, состоящие из пар имя-значение, которые могут связываться с каталогами и файлами. Свойства также подпадают под контроль версий.

В системе Subversion используется другой, по сравнению с системой CVS, механизм создания веток и релизов – система Subversion создает ветки и релизы путем простого копирования проекта, т.е. релиз в системе Subversion – это ветка, в которой больше не делают изменений.

В системе CVS клиенту из репозитория передается список изменений, а от клиента в репозиторий – полностью весь ресурс. В системе Subversion – в обе стороны передается только список изменений. В системе Subversion создается список изменений, как для текстовых файлов, так и для бинарных файлов, а в системе CVS каждая новая версия бинарного файла сохраняется в репозитории полностью.

Хотя система Subversion, так же как и система CVS, в случае параллельной работы нескольких участников команды над одной и той же ревизией проекта для изменения текстовых файлов предлагает механизм копирование-изменение-слияние, для изменения бинарных файлов, где слияние изменений от нескольких клиентов невозможно, обеспечивает механизм блокирование-изменение-разблокирование, который предотвращает параллельную работу.

В системе Subversion номер ревизии присваивается всем файлам и каталогам, включая сам репозиторий. Начальная ревизия Subversion-репозитория обозначается цифрой 0. Каждое зафиксированное изменение любого ресурса в репозитории увеличивает его ревизию на единицу. При этом в системе Subversion фиксация изменений в репозитории не приводит автоматически к обновлению рабочей копии – для получения текущей ревизии необходимо произвести операцию обновления.

Репозиторий системы Subversion представляет собой файловую систему, в которой каждый проект представлен своим каталогом, содержащим, как правило, папки trunk (главный ствол разработки), branches (ветви разработки) и tags (релизы разработки). Рабочая копия получается путем копирования отдельного каталога (не отдельного файла) из репозитория, при этом в рабочей копии создается скрытый каталог .svn, содержащий служебную информацию, которая включает в себя ревизию, на основе которой сделана рабочая копия, и метку, указывающую, когда рабочая копия последний раз обновлялась.

Каждому файлу или каталогу репозитория может быть присвоен набор свойств, история изменений которых также отслеживается. Помимо пользовательских свойств система Subversion может присваивать ряд служебных свойств, имена которых начинаются с префикса «svn:». Служебные свойства хранят информацию о MIME-типе файла, ключевых словах для подстановки, правах чтения-записи, файлах и каталогах, исключенных из-под контроля версий, дате и времени создания ревизии, клиенте и др.

Для среды разработки Eclipse существуют плагины Subclipse (http://subclipse.tigris.org) и Subversive (http://www.eclipse.org/subversive), обеспечивающие клиента Subversion-сервера для работы с репозиториями из Workbench-окна.


Плагин Subclipse