Структура проекта в хранилище
Формально 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. Ветвь может быть создана в любой директории хранилища, однако имеет смысл придерживаться описанных выше соглашений о том, где создавать новые ветви.
Ветвь- направление разработки, независимое от других. Ветвь представляет собой копию части хранилища (например, одного каталога), в которую можно вносить изменения, не влияющие на другие ветви. Документы в разных ветвях имеют одинаковую историю до точки ветвления и разные - после неё.
Системы управления версиями предоставляют инструменты для манипуляции ветвями, прежде всего создание ветви и слияние изменений с другой ветвью.
Существуют стволовая, релизная и функциональная ветви.