Какой смысл в тегах на базаре? - PullRequest
5 голосов
/ 22 апреля 2009

Я начал использовать базар после долгого похода в поле svn. У меня также был предыдущий опыт работы с cvs, и я иногда использовал теги.

С помощью svn после выпуска версии вы выполняете svn-копию своего ствола в теги, например svn copy trunk tags / 1.2.0. На базаре я создал такую ​​же структуру хранилища, но отсутствие опции копирования bzr и наличие тега bzr заставили меня задуматься.

Дело в том, что я нахожу теги либо сложными, либо бесполезными. Если я использую теги, я в основном имею свой ствол в качестве единственного каталога, и когда я достигаю вехи, я отмечаю его. Затем я продолжаю развиваться и снова отмечать, когда достигается новый рубеж. Это усложняет следующие задачи:

  • рекурсивное сравнение новой версии со старой версией (с svn-подобным подходом: diff --brief -r)
  • исправление старой версии и создание новой версии с улучшенной версией патча (с помощью svn-подобного подхода: svn copy 2.0.0 2.0.1, затем добавление исправления в 2.0.1 и принятие его)
  • получение нужной версии без необходимости ее проверки (если вы проверяете все дерево в svn-like, у вас есть все версии и ветви, и вы делаете это только один раз)

В результате я использую ту же структуру репозитория svn в bzr и каждый раз выполняю физическую копию транка. Это означает, что я не вижу реального использования команды тега bzr в этом расположении. почему я должен пометить всю ревизию репо номером версии, если она содержит их все для каждой ревизии?

Может ли кто-нибудь указать мне, что я делаю неправильно при использовании и понимании тегов для репозитория bzr?


Редактировать

Итак, насколько я понимаю, концепция состоит в том, чтобы иметь разные ветки bzr (независимые ветки, идущие от магистрали через ветку bzr) для каждого выпуска. Это как svn, просто вы не помещаете корневой каталог в хранилище. Я до сих пор не вижу какой-либо конкретной причины для тегов, кроме того факта, что, если вы говорите Foo-1.0.0 Foo-1.0.1 Foo-2.0.0 Foo-2.1.0 Ствол

и при условии, что я всегда отмечал релизы перед ветвлением, в trunk будет иметь теги для всех них, в то время как foo-2.0.0 будет иметь foo-1.0.0 среди своих тегов, но не foo-1.0.1, потому что это было ответвлением от Foo-1.0.0.

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

Ответы [ 3 ]

12 голосов
/ 22 апреля 2009

Что такое теги в bzr?

Теги - это просто запоминающаяся ручка для конкретной ревизии. Вместо того, чтобы пытаться вспомнить david@hrcsb.org-20090420170402-eql4vzvcifkz4fwy или revno 19721, вы можете обратиться к своему тегу:

bzr export -r tag:foo-1.0.0.0 release-foo-1.0.0.0.tar.gz trunk/

Как мне управлять выпусками в bzr?

Звучит так, как будто вы рассматриваете свои выпуски как отдельные линии разработки (так называемые: ветки), поэтому я бы порекомендовал пометить ваш ствол, чтобы вы знали, откуда вы ветвились, и создавая отдельные ветки выпуска:

bzr tag -r 1234 -d trunk/ foo-1.0.0.0 
bzr branch -r 1234 trunk/ release-1.x

Когда вы исправляете свои ошибки для выпусков 1.x, вы делаете их в ветке release-1.x, отмечая каждую точку выпуска:

bzr tag -r 1255 -d release-1.x/ foo-1.0.0.1
bzr export -r tag:foo-1.0.0.1 release-foo-1.0.0.1.tar.gz release-1.x/

Ваша структура каталогов может выглядеть примерно так:

fooproj/
  release-1.x/
  release-2.x/
  trunk/
8 голосов
/ 22 апреля 2009

Ну, в общем, вы не должны пытаться скопировать структуру каталогов SVN. Я понятия не имею, почему в SVN это так, но в основном теги - это просто маркер на определенный момент времени в вашем хранилище bzr. Если вы хотите различить тег, это можно сделать как

bzr diff -r tag:TAG_NAME

Так что, когда вы делаете релиз, просто пометьте его и будьте на пути. Ничего особенного, как перемещение чего-либо в определенную папку или что-либо еще.

Я бы порекомендовал вам начать использовать отдельные ветви вместо тегов для вещей, к которым вы хотите вернуться, скажем, в строке кода 2.0.x, чтобы у вас была ветка для 2.0.x, а затем теги, как 2.0.0 и 2.0.1 в нем.

Также, проверьте http://bazaar -vcs.org / Спецификации / Пометка

1 голос
/ 24 апреля 2009

Теги в SVN больше похожи на SVN филиалы. Вы описали рабочий процесс, который хорошо сопоставлен с ветками bzr. Теги позволяют вам иметь одну ветку с указателями на ваши релизы, так что любой может получить точно выпущенную версию из транка:

bzr ветвь ствола foo-1.0 -r тег: 1.0

...