Есть еще несколько моментов, на которые следует обратить внимание:
- Дерево
tags
(и обычно это будет дерево) содержит гипотетически неизменные снимки кода в определенной точке ввремя;это не то, что вы хотите изменить, так как большинство развертываний будут основаны на тегах - Большинство клиентов Subversion жалуются, если вы пытаетесь зафиксировать изменения в дереве
tags
, а не просто копировать в него - Для большинства целей
trunk
- это особый случай каталогов в branches
;единственное существенное отличие состоит в том, что он, как ожидается, будет содержать основной путь разработки
Обычно нет веских оснований проверять весь проект, как отмечали другие, поскольку большую часть времени выРаботает только на стволе и на одной или двух ветках, и весь проект может съесть значительное количество дискового пространства.Основная «ветка» разработки - чаще всего единственное, что вам нужно.
Вот пример из реальной жизни.Наша команда делает все изменения кода против ствола.Когда нам нужен альфа-релиз (pre-complete), мы просто помечаем ствол.Как только мы нажимаем «код завершен» для данного выпуска, мы создаем ветку замораживания кода, где мы делаем все изменения нашей версии.Релизы бета, RC и GA отмечены в этой ветке.Если нам нужно патчить релиз GA, патч делается против ветви и объединяется со стволом.Таким образом, нам не нужно беспокоиться о попадании нового кода в протестированный и одобренный GA, если нам нужно исправить что-то конкретное.Это также позволяет нам начать работу над следующей версией программного обеспечения, как только код будет заморожен.
Кроме того, если есть «побочный проект», который является внеполосным для транка, вы можетесоздайте для этого ветку и объедините ее, когда будете готовы.
Некоторым командам нравится создавать ветку для каждой ошибки, а некоторые работают непосредственно над стволом (как у меня).Если ваша команда делает ошибку в ветке, я бы никогда не проверил весь проект.Помимо всего прочего, я бы увидел много кода, который меня не волновал бы.
Кроме того, просто замечание по управлению репозиторием, как упомянуто в @humble_coder
- большинство инструментов Subversion довольно просты в использованиикогда дело доходит до управления ветками / тегами.Например, TortoiseSVN имеет обозреватель хранилища, который позволяет довольно легко копировать объекты (создавая ветки и теги), и даже инструмент командной строки svn можно использовать для выполнения той же операции, что и для атомарной операции (на самом деле у нас есть скрипткоторый создает либо альфа-теги, ветвь замораживания кода, либо теги выпуска после замораживания.
Надеюсь, это поможет!