Пометка в Subversion - как я могу принять решение о продолжении работы над моим сундуком или новым тегом?

58
5

Я запускаю Tortoise SVN для управления проектом. Очевидно, что принципы вокруг тегов применяются к любой реализации SVN, но в этом вопросе я буду ссылаться на некоторые диалоговые окна и сообщения, специфичные для TortoiseSVN.


В моем рабочем каталоге и структуре репозитория subversion есть директория корневого источника и каталоги Trunk, Tags и Branches. (Я не мог понять, как сделать многоуровневую иерархию с отступом в уценке, не используя пули, поэтому, если кто-то может отредактировать и исправить это, я был бы признателен.)


Я работаю из каталога Trunk в своей рабочей копии, и он указывает на каталог Trunk в репо. Я хочу применить тег "Release1", поэтому я выбираю пункт "Branch/tag..." и устанавливаю путь репо как свой тег [repo_path/bla/Source/tags/Release1]. Это диалоговое окно дает мне возможность "Переключить рабочую копию на новую ветку/тег".


Я понимаю, что если этот параметр не установлен, новая ветка "Release1" в разделе/​​Теги "будет создана, но моя рабочая копия останется на предыдущем пути" Trunk ". Если я проверю этот параметр (или используйте Switch). Я понимаю, что моя рабочая копия переключится на новую ветку "Release1" в разделе "/Tags".


Где мне не хватает понятия, как это принять. Мне кажется, что я не хочу переключать рабочий каталог на недавно созданный тег, поскольку по определению (?) Я хочу, чтобы этот тег был моментальным снимком моего кода с момента времени. Если я не переключу рабочий каталог, я продолжу работу с Trunk, и когда я смогу сделать еще один снимок, я сделаю еще один тег. И так далее...


Я понимаю это право или я что-то неправильно указываю в предыдущем абзаце (например, выражение о том, что вы не хотите переключаться на тег, поскольку тег должен представлять точку во временном снимке) или иным образом отсутствует что-то относительно того, как это сделать решение?

спросил(а) 2010-05-21T06:04:00+04:00 10 лет, 6 месяцев назад
1
Решение
101

Пусть make проще:


Рекомендуемый способ создания структуры проекта:


    svnRoot/projectName/trunk (фактическая строка разработки)
    svnRoot/projectName/tags/Release_X.X.X(думайте в тегах как ярлык, но они просто копии)
    svnRoot/projectName/branches/Release_X.X.X(копия, которая может быть обновляемой, ветвь - суб-проект)

Никогда не переписывайте тег (вы можете, но не должны).


Если вам нужно разработать somenthing, не разрушая работу другого, создайте ветвь, затем слейте ветку с помощью соединительной линии, но будьте осторожны:)

ответил(а) 2012-03-01T22:31:00+04:00 8 лет, 9 месяцев назад
83

В Subversion тег не является "меткой", которую вы наделили ревизией; это копия ствола (или ветки или что-то еще) в определенный момент времени. Будучи всего лишь скопированным каталогом, вы можете это сделать; но вы не должны.


Как только вы сделаете тег, вы должны оставаться там, где находитесь (ветка или туловище), и работать там, не переключаясь в каталог тегов. Если вы привязаетесь к каталогу тегов, вы измените его содержимое, а затем оно больше не будет полезным как "моментальный снимок".

Когда вы создаете ветку, обычно вы хотите переключиться на нее, но может возникнуть ситуация, когда вы хотите оставаться в trunk после создания ветки (например, если случайно вы заметили, что в trunk ASAP есть исправление ); это ваше решение. Вы всегда можете переключаться позже в любое время. Когда вы создаете тег, вы не можете принять решение; оставайтесь в филиале. Я не могу придумать ни одного случая, когда переключение на тег было бы полезно...

ответил(а) 2010-05-21T06:07:00+04:00 10 лет, 6 месяцев назад
58

В Subversion технически нет такой вещи, как "ветвь" или "тег". Для SVN это просто копии каталога. Они являются только особыми из-за того, как вы относитесь к ним.


Tag = сделать копию проекта, но не трогать его после создания копии. Обычно вы не хотите переключаться на тег, потому что вы (обычно) не совершаете никаких изменений там.


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

ПРИМЕЧАНИЕ # 1: В то время как сам SVN не имеет специальной обработки трэк/ветвей/тегов, TortoiseSVN имеет подсказку интерфейса, чтобы препятствовать фиксации тега. Если вы проверите тег (или сделайте тег и переключитесь на него), выполните некоторую работу, затем попытайтесь зафиксировать, TSVN отобразит предупреждение. TSVN пытается угадать, что вы действительно пытались сделать.


ПРИМЕЧАНИЕ # 2: Вам не обязательно нужен тег для моментального снимка момента времени. Номер ревизии репо делает это для вас.

ответил(а) 2010-05-21T15:42:00+04:00 10 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема