На самом деле есть пять концепций, с которыми можно играть:
- теги
- локальные теги
- закладки
- облегченные ветви
- именованные ветви
Легкие ветви - это то, что происходит, если вы просто используете Mercurial.История вашего хранилища разветвляется, а иногда и сливается, когда вы меняете вещи и перемещаетесь по своей истории.
Другие четыре способа - это аннотирование легких ветвей и наборов изменений, которые их составляют.
именованные ветви и тегиэто только ртутные концепции, в которых имена ветвей и теги фактически записываются в хранилище, делая больше изменений в хранилище.Они будут распространяться в другие репозитории способами, которые не обязательно очевидны.
локальные теги и закладки намного больше похожи на то, что git называет тегами и ветвями.Они являются метаданными, а не смешиваются с версионными объектами.Таким образом, они не представлены как часть истории хранилища.Они имеют тенденцию быть локальными для вашего репозитория и не будут распространяться, если вы не распространяете их преднамеренно.
По крайней мере, я думаю, что так они все работают.Приблизительно после двенадцати месяцев ежедневного использования Mercurial я так и не смог разобраться с его моделями.Если кто-то знает лучше меня, то не стесняйтесь редактировать этот ответ, чтобы он был правильным.
Как я на самом деле использую эти вещи на практике.
Я работаю над одним общим репозиториемоколо 20 человек.Я делаю много экспериментов и облегченных веток в своем собственном частном репозитории, которые никогда не попадают в наш главный центральный репозиторий.Иногда, когда эксперимент завершается, я изменяю основную строку и помещаю набор изменений в центральный репозиторий, откуда он попадает на компьютер других пользователей.
Иногда я помещаю некоторые наборы изменений всотрудник, если они один из тех, кому нравится, как работает ртуть.Но некоторые люди немного боятся этого и предпочитают, если я отправлю им различия, которые они могут применить с патчем.
Для экспериментов, которые я ожидаю, будут недолговечными и приватными, я просто позволяю легким ветвям происходить там, где они могут,и помни, что происходит.Если я чувствую, что моя память проскальзывает из-за ветки, которая существует уже некоторое время, я добавляю ее в закладки.
Я использую локальные теги, чтобы пометить изменения, которые я хотел бы вернуться в один день.Они облегчают поиск интересных прошлых состояний.
Я сам почти никогда не делаю нелокальные теги или именованные ветви (кроме случая, и я уничтожаю их, если я это делаю).Но наши люди выпускают.Наши выпущенные основные версии имеют свои собственные именованные ветви от основной линии, а второстепенные версии имеют теги на этих ветвях.Это гарантирует, что эти важные ветви и теги выглядят одинаково для всех.
Опять же, я не знаю, так ли это, как предполагается использовать Mercurial, но, похоже, это модель, которая хорошо работает для нашего размеракоманды.
Если бы трое или четверо из нас хотели сотрудничать в эксперименте, это, вероятно, стоило бы именованной ветви, которую мы, вероятно, поделили бы между собой, но не подтолкнули к центральному репо.Я не знаю, насколько хорошо это сработает!