Структура проекта в хранилище

Формально Subversion не накладывает каких-либо ограничений на файловую структуру проекта - она может быть какой угодно в рамках правил именования объектов файловой системы. Тем не менее, существуют рекомендации, призванные облегчить работу с ветвями и метками. В простейшем случае в корневой директории хранилища рекомендуется создать как минимум три поддиректории:

/.

Trunk

Branches

Tags

где вся файловая структура проекта (основной линии разработки) должна содержаться в поддиректории trunk, поддиректория branches должна содержать ветви проекта, а tags - метки. Например, следующая структура директорий хранилища:

/.

Trunk

Branches

branch_1

Tags

tag_1

tag_2

предполагает наличие у проекта (trunk) одной ветви «branch_1» и двух меток «tag_1» и «tag_2». Каждая из этих директорий (trunk, branch_1, tag_1 и tag_2) содержит копию соответствующей версии проекта.

Если проектов в хранилище несколько, то такая структура поддиректорий создается для каждого проекта:

/.

Project1

trunk

branches

tags

Project2

trunk

branches

tags

то есть в корневой директории находятся директории проектов, и в каждом из них есть свои trunk, branches, tags, относящиеся только к этому проекту. Описанные структуры директорий хранилища являются лишь примерами, на практике хранилище можно организовать таким способом, который оптимально подходит в данном конкретном случае.

Другим способом хранения нескольких проектов является создание нескольких хранилищ. В разных хранилищах следует располагать проекты, которые никак не связаны между собой, поскольку между хранилищами нельзя будет выполнить операции копирования, перемещения и слияния. Несколько хранилищ можно при необходимости объединить в одно с сохранением истории ревизий (путём импорта командой svnadmin load с параметром --parent-dir).

Ветви

Subversion использует «файловую» модель для реализации ветвей и меток, то есть ветвь является обычной директорией (можно также сделать ветвь из одного файла, а не директории). Новая ветвь создаётся командой svn copy. Ветвь может быть создана в любой директории хранилища, однако имеет смысл придерживаться описанных выше соглашений о том, где создавать новые ветви.

Ветвь- направление разработки, независимое от других. Ветвь представляет собой копию части хранилища (например, одного каталога), в которую можно вносить изменения, не влияющие на другие ветви. Документы в разных ветвях имеют одинаковую историю до точки ветвления и разные - после неё.

Системы управления версиями предоставляют инструменты для манипуляции ветвями, прежде всего создание ветви и слияние изменений с другой ветвью.

Существуют стволовая, релизная и функциональная ветви.