2009-03-10 2 views
1

Я разработал своего рода шаблон веб-сайта брошюры, на котором я основал большинство сайтов моих клиентов. Шаблон и производные сайты хранятся вместе в репозитории Subversion. Кровотечение (но стабильный) код живет в /trunk; и каждый веб-сайт имеет свою собственную ветку, чтобы упростить настройку. Теперь, когда я приближаюсь к выпуску 2.0, я чувствую, что мне нужно смириться с тегами.Как использовать теги управления версиями?

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

Отключить ли я /tags/2.0? Это не так. Где я буду совершать свои изменения? Мне пришлось бы преднамеренно обойти родословную моей ветви. Должен ли я вручную искать версию сундука, которой соответствует /tags/2.0, а затем отделить эту ревизию в багажнике? Это кажется ... громоздким. Я считаю, что до недавнего времени Subversion даже не хранил эту информацию!

Очевидно, что у меня нет чего-то принципиального. Быстрое краткое изложение того, как теги фактическииспользуется (в отличие от того, что ониявляются) было бы полезно. Благодарю.

Редактировать: Где я сказал «Отключить /tags/2.0», я хотел сказать: «Проверьте /tags/2.0». Но эта ошибка была также ответом на мой вопрос. По какой-то причине я никогда не думал о копировании тега. Глупо, да? Но, на мой взгляд, теги были «окончательными».

И, кстати, я полностью понимаю, что теги - это просто конвенция. Сама конвенция была смущена, а не ее базовая реализация.

ответ

2

Я положил краю кровотечения (но стабильный) в/ствол. Когда функции для выпуска были завершены, я копирую/trunk в /branches/Foobar-1.2.3.X. Я немедленно копирую /branches/Foobar-1.2.3.X в /tags/Foobar-1.2.3.0 (это упрощает работу позже, я могу diff /branches/Foobar-1.2.3.X to /tags/Foobar-1.2. 3.0 и посмотреть, что изменилось в моей ветке, так как к тому времени/туловище, вероятно, будут разными). Окончательное развитие продолжается по функциям в /branches/Foobar-1.2.3.X, и когда я делаю релизы, я копирую в /tags/Foobar-1.2.3.1, /tags/Foobar-1.2.3.2 и т. Д. Моя система сборки предназначенный только для вытягивания кода из/tags/Foobar - ????.

Это также работает для «специальных» ветвей: /branches/Foobar-WhizzBangFeature-1.2.X

+0

Можете ли вы дать более подробную информацию о своем процессе. То, что я читаю, - это для каждой функции, с которой вы работаете ... Как вы обновляете багаж? Почему бы вам не работать в багажнике? –

+0

Большая часть работы выполняется на багажнике. Я вступаю, когда «делаю» с развитием, и готов к качеству. Ошибки, обнаруженные QA, фиксируются на ветке (и объединены в магистраль), и когда она проходит QA, она помечена и выпущена. То же самое с ошибками, обнаруженными в производстве: исправление на ветке, слияние на магистраль, тег и выпуск. –

1

Да, сделайте ветку с svn copy в /branch папке хранилища для версии, которую вы хотите разветвить.

Например:

/branch 
/tags 
    /1.0 
    /2.0 
/trunk 

Тогда для филиала на 2,0:

/branch 
    /something2.0 
/tags 
    /1.0 
    /2.0 
/trunk 
2

Всегда создавать филиалы из багажника, если вы не хотите, чтобы расшириться от точки в прошлом (в прошлом тег, ветвь или старая версия).
Кроме того, вы не можете легко совершить что-либо на ярлыке; по крайней мере, клиент TortoiseSVN защищает вас сообщением.

0

Вы делаете копию (используя 'svn copy') вашего каталога тегов под ветвями/ветвями (или где бы вы не хранили свои ветви), возможно, с использованием исправления 2.0 или что-то подобное имени ветки (отличное от имени тега).

Все просто. SVN не имеет тегов и ветвей, просто каталогов и файлов. Все дело в вашей политике.

Возможно, возможно, более естественным способом будет создание ветви 2.0 сначала, стабилизация кода в ветке, а затем создание тега из ветки.

0

Я собираюсь предположить, что вы используете Tortoise SVN. Предположим, у вас есть следующая ситуация:

/trunk 
/braches 
    /branch1 
    /branch2 
/tags 
    /1.0 
    /2.0 

Тогда все, что вам нужно сделать, это:

  • открыть черепаховый репо-браузер
  • идти к корню и расширить вещи, так что вы можете увидеть, что вы делают
  • выберите папку /tag/2.0
  • Ctrl-перетащить, чтобы скопировать его в/ветви folde
  • переименовать новую папку (или п ot)

И все. Затем вы зашли, чтобы проверить /branches/tag/2.0 (или как вы его назвали), чтобы работать над ним.

Что вам нужно сделать, так это всегда думать о SVN как о просто файловой системе. Имена и значения, которые вы даете в этой файловой системе, зависят от вас. Тот факт, что вы не можете редактировать «теги», например, просто соглашение - в основной файловой системе все равно, редактируете ли вы их или нет.

Смежные вопросы