Я начал использовать базар после долгого похода в поле 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.
Я до сих пор не вижу необходимости иметь и использовать теги. Мой тег подразумевается в имени каталога, который я выбрал для этой ветви. Меня не особо интересует конкретный номер релиза, мне просто интересно, что он находится в определенном каталоге.