2010-11-09 4 views
10

Я использую меркурийный контроль источника. Я хочу иметь главную ветвь dev, а затем иметь точки со временем, которые совпадают с «v1.0» «v1.01» и «v2.0», так что в любое время я могу вытащить слово «v2.0» »и раздавить некоторые ошибки на нем. Я слышал, что некоторые люди говорят, что мне нужны теги, некоторые говорят, что мне нужны закладки, другие говорят, что мне нужны имена ветвей, а третьи говорят, что мне просто нужно поддерживать несколько клонированных репозиториев.Mercurial Release Management

С моей точки зрения, множественные клонированные репозитории кажутся плохим выбором, потому что одна вещь, которая мне нравится в DVCS, заключается в том, что после того, как вы клонируете «репо», у вас есть вся прошлая история и вы можете полностью восстановить с ноутбука someones, если ваш центральный сервер сгорит. Если ваше репо разделено повсюду, я чувствую, что вы теряете это преимущество, если только вы не ожидаете, что люди будут клонировать 5 репозиториев и поддерживать их на своих компьютерах локально. Это касается меня, потому что большинство людей говорят, что это хороший способ сделать это, но он логически не имеет смысла для меня. (Я понимаю, что это не правильный способ делать резервные копии, но не иметь полного доступа к части репо, не возвращаясь к серверу, кажется странным для меня)

Так что для меня способ сохранить все вместе должен будь то теги, названные ветви или закладки. Однако я не могу отличить их. Люди склонны объяснять закладки как «похожие на теги, с некоторыми оговорками» и называемые ветвями как своего рода движущийся тэг, который, вероятно, лучше делать с клонами.

Мне очень нравится разветвление стиля git (одно репо, несколько ветвей от него), однако я не хочу прибегать к странным плагинам или взломам, чтобы он выглядел как git. Я хочу понять правильный меркурийный путь.

Бонус: как «мелкомасштабные» ветви вписываются в микс, т. Е. Вы хотите работать с небольшой функцией в своей собственной ветке?

ответ

0

DVCS, как Mercurial или Git, позволяет легко клонировать репо. Это не значит, что вы используете его для выполнения рабочего процесса управления выпуском.

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

Вы можете работать с DVCS таким образом, чтобы у вас мог быть мастер-репозиторий, в котором вы могли бы нажимать изменения и извлекать изменения, как VCS (subversion) клиент-сервер, с дополнительным преимуществом, которое вы могли бы работать в автономном режиме.

для вашего рабочего процесса управления релизами, вы все равно должны смотреть на

  1. закладки, теги и ветвей.

Существует достаточно обсуждения SO по каждой из этих тем.

Ниже приводится хорошей краткой информацией о разветвленности с клоном, закладкой и именованные ветвями

2

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

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

Теги - Именованная совершающие хорошо, если вам нужно точно знать, что был выпущен в версии 1.0

Я бы использовать ветви имя для развития в 1.x ветви версии 2.x ветвь и т.д. Затем используйте тег для обозначения того, что на самом деле вышло как версия 1.0, 1.1 было бы сделано на дереве 1.x, тогда релиз 1.1 был бы тегом того, что было в нем. Я бы не сделал закладки частью потока, так как вы должны синхронизировать их вручную (примечание в новых версиях меркуриальных закладок можно синхронизировать удаленно, хотя оно по-прежнему требует вмешательства пользователя.)

2

Я никогда не понимал идею клонировав репозитории как анонимные филиалы.

hg branch feature-name - как я люблю катиться.

0

Я использую меркурийный контроль источника. Я хочу иметь главную ветвь dev, а затем иметь точки со временем, которые совпадают с «v1.0» «v1.01» и «v2.0», так что в любое время я могу вытащить слово «v2.0» »и раздавить некоторые ошибки на нем.

Я рекомендую вам пометить каждую версию выпуска.

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

Не имеет значения, используете ли вы именованную ветку или клон, поскольку результат является таким же: ошибка исправлена, исправление выпущено в предыдущую версию, исправление включено в основную ветвь разработки. Прочтите other answers, попробуйте оба метода и используйте тот, который вы предпочитаете. Лично я использую именованные ветви для этих долговечных ветвей релиза, чтобы вся история каждой версии приложения хранилась в одном репозитории.

Итак ... отметьте каждый выпуск и ветвь «по запросу».

0

Тебе нужны метки, чтобы отметить выпуски v1.0, v1.01 и v2.0 и т. Д. Для ветвистой разработки (исправления ошибок, ветвей функций и т. Д.) Вы можете использовать закладки - они уже очень хорошо поддерживаемых в совместном использовании (см. http://mercurial.aragost.com/kick-start/en/bookmarks/#sharing-bookmarks). Если вам нужно иметь долгоживущие ветви (т. Е. Они будут в репо в обозримом будущем), используйте названные ветви. Они были бы хорошим выбором, например. для наличия v1, v2, ... ветвей развития.

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

См. Также mercurial: mix named branches and bookmarks для быстрого и графического ответа о том, как закладки и названные ветви различны.

Смежные вопросы