svn: различия между тегами и номером ревизии - PullRequest
1 голос
/ 31 октября 2009

Этот вопрос похож, но не идентичен Для чего вы в любом случае используете каталог svn tags? ; Здесь есть некоторые тонкости, которые я хочу понять.

Помимо следующих функций:

  • ссылается на определенное состояние дерева файлов с именем вместо числа
  • изменение ассоциаций имен и номеров (но с сохранением их истории) путем изменения определенного /subtree/tags/{tag_name} каталога
  • используйте svn switch для обновления вашей рабочей копии до определенного тега

что еще можно / нужно делать с тегами?

Если все теги делают снимок определенного корня поддерева в определенной ревизии репозитория, технически вы можете:

  • использовать /subtree/trunk и subtree/branches без a /subtree/tags каталог
  • создать свойства в каталоге /subtree/trunk, например tag:Release_1.0 = 309, tag:Release_1.1 = 496 и т. Д.

и вы получите отображение имени-номера с историей ревизий, которое может быть прочитано инструментальными программами ... просто сейчас набор инструментов svn использует соглашение /subtree/tags/ для некоторых вещей.

Есть ли причина помещать в каталог /subtree/tags/ файлы, которые не , все из одной и той же версии транка?

Ответы [ 4 ]

3 голосов
/ 31 октября 2009

Есть ли причина помещать в каталог / subtree / tags / файлы, которые не принадлежат к одной и той же версии ствола?

Да, конечно.

Предположим, что ревизия R была помечена как версия 1.0, и все с удовольствием взломали ствол. Теперь поддержка идентифицирует конкретную ошибку в версии 1.0, которая уже исправлена ​​в файле foo.cpp в редакции (R + n), и исправление является изолированным, которое не требует каких-либо изменений в других файлах. Теперь они могут создать версию 1.1, которая является копией 1.0 (что раньше было ревизией R), за исключением foo.cpp, где они используют ревизию (R + n), поэтому они исправили это в 1.1.

1 голос
/ 31 октября 2009

Теги не поддерживают отображение имени / номера. Номер редакции хранилища является глобальным, поэтому каждый раз, когда вы изменяете какой-либо файл, независимо от того, находится ли он в стволе / ветвях / тегах, номер будет увеличиваться. Значение тега в том, что, поскольку вы не фиксируете его (по соглашению; это не применяется SVN), дерево тегов всегда будет таким же, как когда вы его отмечали, даже если вы получаете ревизию HEAD когда вы опускаете каталог тегов.

0 голосов
/ 31 октября 2009

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

0 голосов
/ 31 октября 2009

Не изначально

Я бы сказал, что вы получаете точное понимание того, как работает SVN. В тегах, ветках и каталогах нет ничего волшебного. Это все единый интегрированный механизм в SVN.

Но позже ... Это была бы нормальная процедура для настройки того, какие файлы покрыты каким тегом. Представьте себе выпуск. Хотя релиз может изначально получить тег для одной версии репозитория, критические исправления, отозванные функции и другие обычные действия по разработке релиза, естественно, приведут к тому, что теги будут перемещаться вперед и назад по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...