Подтвердить что ты не робот

Что вы используете в любом случае для каталога тэгов svn?

Хорошо, поэтому мы все знаем стандартную настройку SVN

trunk\
branches\
tags\

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

Я понимаю, что теги\будут содержать такие вещи, как "Version1Release \, Version2Release \, ThatTimeWeUpgradedEverthing" и т.д. Но вот что, если вы собираетесь и должны внести изменения в версию 1Release, тогда это должна быть ветка, и если теги, как предполагается, никогда не меняются, то зачем вообще копировать исходный контроль? Просто сделайте примечание, ревизия 712 была нашей версией версии 1.

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

4b9b3361

Ответ 1

Просто сделайте примечание. Версия 712 была нашей версией версии 1.

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

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

Теги также превосходны как "триггерная точка". В моих собственных репозиториях, с помощью тега, автоматически запускается (через post-commit hook) script, который строит, упаковывает и отправляет его на наш веб-сайт.

В конце концов, теги являются дешевыми копиями. Если вы когда-либо захотите "сделать снимок" своей сборки таким образом, чтобы ее моментальный снимок не изменился, пометьте его. Это не так, как вам дорого.: -)

Edit:

Чтобы обратиться к идее "реализованные как ветки" - это не так. В самом деле. Фактически, Subversion не реализует разветвление или тегирование вообще. Это полностью созданные пользователем идеи, оба из которых используют одну и ту же команду, svn copy. Однако вы также должны использовать эту команду для копирования файла в пределах соединительной линии; в этом нет ничего особенного. И нет ничего особенного в ветвях или тегах. Это просто обычные каталоги, которые мы решили специально обработать (и даже можем навязать это с помощью крючков), чтобы упростить администрирование проекта.

Ответ 2

Просто сделайте примечание. Версия 712 была нашей версией версии 1.

Для меня создание тега - это, отмечающее, что rev 712 - версия 1.

Также очень легко увидеть все сборки, этапы, релизы и т.д., просто просмотрев папку "Теги".

Если вы считаете, как Labels работают в VSS, теги намного быстрее и легче работать, но выполняют одно и то же. Просто не переусердствуйте, анализируя тот факт, что он создан с помощью команды копирования точно так же, как ветка.

Изменить: Если вы параноик о ком-то, кто совершает изменения в папке с тегами, вы можете использовать перехваты для фиксации, чтобы предотвратить его с помощью пользователя.

Ответ 3

Просто сделайте примечание. Версия 712 была нашей версией версии 1.

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

Намного проще просто создать тег из ревизии 712 (т.е. скопировать из r712 в каталог тегов) с именем "версия 1 релиз". И все сразу знают, что это релиз, без предварительной проверки, какая версия версии 1 была.

Ответ 4

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

Как утверждают другие, теги/ветки/сундуки - это всего лишь конвенция поверх этого, subversion позволяет скопировать одну часть дерева в другое место (почти) бесплатно, но в этом ядро, что об этом.

Вы правы, что вам нужна ветка обслуживания для вашей версии. Тег действует как ваше имя для какой-либо конкретной версии, отправленной где-то извне - и комментарий коммита при создании тега дает вам возможность объяснить, куда он пошел, и почему (например, "публичная бета-версия", "запрос комментариев" ).

Существует несколько сценариев скриптов, которые препятствуют внесению изменений в тег, но они не будут реализованы по умолчанию, потому что некоторые люди используют subversion совершенно по-другому (например, резервное копирование файла конфигурации и т.д.). Subversion - это общий инструмент, там нет "правильного" способа его использования, просто сильные соглашения для обычных ситуаций.

Фактически, collabnet начинает рассматривать, как используется управление версиями для не-разработка проекты. Вся идея тегов и ветвей может быть неактуальной для некоторых из них.

Мое соглашение, когда мы думаем о репозитории исходного кода:

  • Trunk - полный список изменений, которые могут быть выпущены для жизни
  • Задача - внешнее описание задания/ошибки, которое группирует набор исправлений.
  • ветвь развития - набор исправлений, которые еще не готовы для магистрали
  • Отделение обслуживания - место для сбора ревизий из магистрали для выпуска
  • Тег - названный снимок ветки обслуживания

Теги также могут предоставить вам полезный URL-адрес для документации, например:

"Релиз доступен по адресу http://svnserver/myproject/tags/1.0 " Возможно: "Релиз доступен по адресу http://svnserver/myproject/[email protected] "

Но когда вы просматриваете репозиторий, вы никогда не столкнетесь с @4483 и не знаете, что это было каким-то образом особенным.

Ответ 5

Теги должны указывать неизменяемую "версию приложения" набора файлов.
( "версия приложения" в отличие от "технического внутреннего номера версии, используемого VCS", например, для версии SVN или SHA-1 для Git, или для ClearCase, или...)
Они должны служить ссылкой для запроса и развертывания в другом рабочем пространстве (для тестирования или UAT - Тесты приемки пользователей -)

Так как SVN реализует теги, такие как ветки: как каталог, стимул для изменения файлов в теге может быть сильным, но победит цель тега. У другого VCS есть понятие метки (или "базовой линии" ), которая после установки больше не может быть перемещена.

Кому Джордж Мауэр комментарии:

Хорошо, это то, что я говорил. Теги никогда не должны меняться, поэтому их очень... странно реализовать их как ветки.

"реализует"? Но они не "реализовали" понятие тега. SVN не имеет "тега" как такового. Они просто повторно использовали свои ветки и сказали, что они также могут использоваться как тег.

SVN RedBook четко заявляет:

Но подождите немного: не является ли эта процедура создания тегов той же самой процедурой, которую мы использовали для создания ветки? Да, на самом деле. В Subversion нет разницы между тегом и веткой. Оба являются просто обычными каталогами, которые создаются путем копирования.
Как и в случае с ветвями, единственная причина, по которой скопированный каталог является "тегом", состоит в том, что люди решили относиться к нему таким образом: до тех пор, пока никто не компилирует в каталог, он навсегда остается моментальным снимком. Если люди начинают делать это, он становится веткой.

Ответ 6

Мы использовали его для тегов определенных сборников, которые были интересными, но не выпусками, например: "Демоверсия инвестора" и т.д.

Ответ 7

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

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

Вы не должны проверять тег для редактирования.

Вы не теряете историю с помощью ветвления (копирования) в SVN. Все это связано.

Ответ 8

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

Вы не хотите проверять/изменять/совершать что-либо в каталоге тегов. Это просто место для сохранения моментального снимка вашего кода с определенного момента времени.

Ответ 9

В моем опыте теги используются для маркеров выпуска и где вы вряд ли вносите изменения.

Если вы создаете ветвь "release2-0", а затем должны внести изменения (например, исправить ошибку, найденную после запуска), она больше не представляет то, что вы выпустили для версии 2.0.

Если вместо этого вы создаете тег "release2-0" и обнаружите, что вам нужно исправить эту версию, вы можете создать новую ветку, исправить ее и пометить ее как "release-2-0-1".

Таким образом вы можете легко получить доступ к любым вашим релизам.