Что означают «ветвь», «тег» и «ствол» в хранилищах Subversion? - PullRequest
1166 голосов
/ 19 августа 2008

Я часто видел эти слова в дискуссиях о Subversion (и, я думаю, в общем хранилище). Я использовал SVN для своих проектов последние несколько лет, но я никогда не понимал полную концепцию этих каталогов.

Что они означают?

Ответы [ 16 ]

9 голосов
/ 19 августа 2008

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

Каталог ветвей предназначен для хранения ваших веток, какими бы они ни были.

Каталог тегов в основном предназначен для маркировки определенного набора файлов. Вы делаете это для таких вещей, как выпуски, где вы хотите, чтобы «1.0» были этими файлами в этих ревизиях, а «1.1» - этими файлами в этих ревизиях. Обычно вы не изменяете теги после их создания. Для получения дополнительной информации о тегах см. Глава 4. Ветвление и слияние Управление версиями с Subversion ).

8 голосов
/ 04 сентября 2008

Tag = определенный фрагмент времени, обычно используемый для релизов

Я думаю, это то, что обычно подразумевают под «тегом». Но в Subversion:

Они на самом деле не имеют никакого формального значения. Папка - это папка для SVN.

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

Или, возможно, я только что использовал CVS слишком долго.

6 голосов
/ 19 августа 2008

Я думаю, что некоторая путаница связана с различием между концепцией тега и реализацией в SVN. Для SVN тег - это ветка, которая является копией. Изменение тегов считается неправильным, и на самом деле такие инструменты, как TortoiseSVN, будут предупреждать вас, если вы попытаетесь изменить что-либо с помощью ../tags/ .. в пути.

5 голосов
/ 19 августа 2008

Я не совсем уверен, что такое «тег», но ветвь - довольно распространенная концепция управления исходным кодом.

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

Сначала вы создадите ветку. По сути, это копия ствола того времени, когда вы создали ветку. Затем вы сделаете всю свою работу в филиале. Любые изменения, сделанные в ветви, не влияют на транк, поэтому транк по-прежнему пригоден для использования, что позволяет другим продолжать работать там (например, исправление ошибок или небольшие улучшения). Как только ваша функция будет завершена, вы вернете ветку обратно в транк. Это переместит все ваши изменения из ветви в ствол.

Существует множество шаблонов, которые люди используют для веток. Если у вас есть продукт с поддержкой нескольких основных версий одновременно, обычно каждая версия представляет собой ветвь. Там, где я работаю, у нас есть отдел QA и производственный отдел. Перед выпуском нашего кода в QA мы интегрируем изменения в ветку QA, а затем внедряем их. При выпуске в производство мы интегрируемся из ветви QA в ветку Production, поэтому мы знаем, что код, работающий в рабочей среде, идентичен тому, что тестировал QA.

Вот запись Википедии о ветвях , поскольку они, вероятно, объясняют вещи лучше, чем я. :)

3 голосов
/ 04 апреля 2018

Для людей, знакомых с GIT, мастер в GIT эквивалентен транку в SVN.

Ветвь и тег имеют одинаковую терминологию как в GIT, так и в SVN.

2 голосов
/ 25 апреля 2017

Ствол : После завершения каждого спринта в Agile мы выпускаем частично отгружаемый продукт. Эти релизы хранятся в багажнике.

Ветви : Все коды параллельных разработок для каждого текущего спринта хранятся в ветвях.

Теги : Каждый раз, когда мы выпускаем бета-версию частично продаваемого продукта, мы делаем для него тег. Это дает нам код, который был доступен в тот момент, что позволяет нам вернуться в это состояние, если потребуется в какой-то момент во время разработки.

...