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

Стратегия Меркурийной маркировки/ветвления

Мой текущий проект разбит на 3 части: веб-сайт, настольный клиент и плагин для сторонней программы. Первоначально мы начали с Subversion для нашего источника управления, но решили попробовать Mercurial после прочтения итогового поста Joel Spolsky. Учитывая, что мы до сих пор не использовали большинство потенциальных возможностей svn, мы решили начать с новых базовых идей о том, как работает управление версиями, что облегчит этот переход.

Однако, после настройки нашего исходного репозитория, мы потеряли то, как тегирование и ветвление должны работать над таким проектом.

По сути, мы одновременно работаем над всеми тремя этими частями. Мы хотим, чтобы релиз представлял собой комбинацию из трех частей. В настоящее время мы работаем в одном хранилище.

Для части Plug-in мы закончили первую итерацию, которую мы называем Plug-In v0.1. Для первой официальной сборки двух других частей мы также хотели бы называть их веб-сайтом v0.1 и Desktop Client v0.1. Когда все три части находятся в v0.1, мы хотели бы иметь полный проект v0.1.

Наша проблема заключается в том, что мы не уверены, как управлять всем этим в репозитории Hg. Будет ли лучший способ справиться с этим, чтобы создать 3 отдельных репозитория для 3 стабильных версий, а затем еще 3 хранилища для текущих разработок? В настоящее время мы имеем все это в одном хранилище. Должны ли мы делать это в ветвях (это ветки, отличные от клонирующих репозиториев?) И теги?

Любая помощь очень ценится.

4b9b3361

Ответ 1

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

Ответ 2

Я очень рекомендую запись в блоге Стива Лоша Руководство по ветвлению в Mercurial, где он описывает несколько подходов к ветвлению, поддерживаемых Mercurial.

Использование функции названий веток Mercurial, вероятно, является самым близким к ветвлению с SVN.

Ответ 3

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

Отдельные репозитории позволят вам легко пометить каждый компонент версией (v0.1), а затем продолжить с развитием по мере необходимости. Когда вы будете готовы выпустить комбинированный продукт, просто вытащите требуемый тег для каждого репозитория, и вы получите полный выпуск продукта. Если у вас есть результаты для приложения, которые не связаны ни с одним из трех компонентов, вы также можете создать репозиторий для комбинированного продукта, чтобы сохранить эти данные. Вы можете обрабатывать ветвление для каждого из компонентов через ветки или клонированные репозитории.

Если вы храните компоненты в одном репозитории, он все равно будет работать, но ваши теги и ветки станут намного более беспорядочными. Когда подключаемый модуль подключится к v0.1, создайте тег для "plug-in v0.1". Сделайте то же самое для настольных и веб-клиентов. Затем, когда вы хотите выпустить продукт, вам нужно будет тянуть из трех разных тегов, каждый из которых имеет значение v0.1.

Я бы выбрал отдельные репозитории. Решение более сложное, если есть общий код, но вы можете найти способы использовать ваши зависимости как библиотеки, а не код.

Для ваших вопросов о ветвлении эта статья является хорошим руководством по различным параметрам и плюсам/минусам.

Ответ 4

Попробуйте использовать Joel Tutorial на Mercurial. Это может дать немного больше или как его использовать. На самом деле не существует "ветвления", используемого в SVN, и действительно, может быть хорошей идеей перестать пытаться использовать Mercurial, как если бы это был SVN. Вместо ветвления у вас есть свои локальные репозитории.