Что на самом деле являются тегами в Subversion (SVN)?А какие инструменты тегов SVN предлагает встроенными?(По сравнению с Clearcase) - PullRequest
1 голос
/ 03 ноября 2011

Что такое теги в Subversion (SVN)? И какие функции Subversion действительно предлагает встроенным для их продуктивного использования?

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

В тегах ClearCase, скорее всего, есть атрибуты файла. У меня сложилось тревожное впечатление, что теги на самом деле не являются чем-то особенным или основным для Subversion, но вместо этого они представляют собой произвольную концепцию, просто папку с копией файлов с определенной ревизией, это правда? Если так, это не так полезно, как эквивалент, скажем, в ClearCase.

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

Ответы [ 4 ]

5 голосов
/ 03 ноября 2011

У меня сложилось тревожное впечатление, что теги на самом деле не являются чем-то особенным или ядром для Subversion, но вместо этого они представляют собой произвольную концепцию, просто папку с копией файлов определенной версии, это правда? Если это так, это не так полезно, как эквивалент, скажем, в ClearCase.

Это абсолютно правильно. И ветви тоже. Филиалы тоже просто каталог, который используется для создания филиалов.

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

На самом деле тегирование в Subversion намного лучше, чем в ClearCase. В ClearCase мне сначала нужно создать тип метки, а затем применить этот тип метки к версии каждого файла, который я хочу пометить. Если вы помечаете, скажем, 10 000 файлов, это может занять около 20 минут. В Subversion тегирование происходит мгновенно. Пометка 10000 файлов занимает меньше секунды. Пометка 100 000 или 1 000 000 файлов занимает больше времени.

В Subversion вы можете получить список всех тегов, просто перечислив содержимое каталога tags. Это дает вам список фактических тегов. В ClearCase вы можете сделать только lstype -type lbtype, который дает вам типы меток, но это не обязательно означает, что любая из этих меток на самом деле есть в любых файлах.

В Subversion теги и ветви обычно имеют разные пространства имен. В ClearCase они используют одно и то же пространство имен, поэтому вам обычно нужно что-то сделать, чтобы отличить теги от меток. Стандарт заключается в том, что теги прописные, а метки строчные.

В Subversion вы также можете видеть, когда и кем был применен тег. В Subversion теги и ветви имеют разные пространства имен. А поскольку теги являются просто каталогами, гибкость, которую вы можете использовать для тегирования, бесконечна:

  • На некоторых сайтах есть каталог tags и специальный каталог для obsolete_tags. Если тег больше не нужен, его можно переместить в устаревший каталог. Это означает, что список тегов в каталоге тегов содержит только соответствующие теги. Однако разработчики все еще могут видеть устаревшие теги.
  • Некоторые сайты используют разные каталоги для тегов сборки и выпуска тегов. Таким образом, если вы пытаетесь просмотреть список всех различных тегов выпуска, вы не смотрите на тысячи тегов сборки.
  • Некоторые сайты имеют разные каталоги для разных клиентов или типов релизов. Таким образом, вы можете говорить о выпуске Acme 3.4 против версии Vegco 3.4.

Большим преимуществом меток ClearCase является то, что типы меток ClearCase могут быть заблокированы, поэтому их нельзя перемещать или применять, если владелец типа метки не разблокирует тип метки. Однако в Subversion есть много сценариев ловушек перед фиксацией, которые могут делать более или менее то же самое. У меня есть тот, который позволяет вам создать тег, но не изменять его.

Другие скрипты хуков идут дальше. Файлы и каталоги Subversion могут иметь свойства, установленные для них. Я видел хуки, которые позволяют человеку, создавшему этот тег, поместить свойство «tag-tag» в каталог, чтобы предотвратить его изменение. Removign свойство «lock-tag» позволяет изменять тег. Это позволяет тегам Subversion имитировать поведение в ClearCase.

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

2 голосов
/ 03 ноября 2011

Вы правы, что теги не являются чем-то особенным для Subversion, только для разработчиков или в сценариях они могут обрабатываться особым образом.

На самом деле то, что я вижу здесь как особенность Subversion здесь - это Ветвление и тегирование - это дешевые (постоянные) операции . Операция копирования в виде жесткой ссылки подразумевается не самой функцией тега . А с здесь :

Subversion не имеет специальных команд для ветвления или тегирования, но вместо этого использует так называемые «дешевые копии». Дешевые копии похожи на жесткие ссылки в Unix, что означает, что вместо создания полной копии в репозитории создается внутренняя ссылка, указывающая на конкретный дерево / пересмотр. В результате ветки и теги создаются очень быстро, и почти не занимают дополнительного места в хранилище.

1 голос
/ 03 ноября 2011

ClearCase, как я уже упоминал в " Каковы основные концепции прозрачных регистров, которые должен знать каждый разработчик? ", имеет файлово-ориентированный подход (в отличие от репозиториально-ориентированного подхода с другие инструменты VCS, такие как SVN)

Когда вы помещаете метку в ClearCase (базовый ClearCase, а не UCM):

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

Базовая линия UCM немного лучше, так как она будет применять вашу метку к всем файлам компонента (нельзя забыть один), и вы не сможете переместить эту метку.

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

1 голос
/ 03 ноября 2011

Что на самом деле представляют собой теги в Subversion (SVN)?

Копия репозитория для некоторой ревизии (RO, по соглашению) в специальном месте

Икакие функции Subversion действительно предлагает встроенные для продуктивного их использования?

Ничего особенного - теги (только в любой VCS) - это просто метка некоторого снимка репозитория с постоянным и простым в использованиииспользовать имя

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

Ну, это теги для точно

Теги

на самом деле не являются чем-то особенным или ядром для Subversion, но вместо этого они представляют собой произвольную концепцию, просто папку с копией файлов определенной версии, это правда?

Да, в качестве веток и всех других физических частей svn-repo

Subversion рекламируется как наличие тегов в качестве функции, когда может показаться, что на самом деле отсутствует ядро ​​понятиядля инструмента, так зачем говорить, что это особенность?

«Дешевая копия», применимая к тегам и ветвям, - это функция .Легко узнать, когда нужно разветвить | тег multiGB-репо

...