Mercurial маркировка / стратегия ветвления - PullRequest
22 голосов
/ 24 марта 2010

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

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

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

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

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

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

Ответы [ 4 ]

19 голосов
/ 24 марта 2010

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

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

8 голосов
/ 24 марта 2010

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

5 голосов
/ 24 марта 2010

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

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

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

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

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

0 голосов
/ 24 марта 2010

Попробуйте использовать Учебник Джоэла по Mercurial . Это может дать немного больше или как его использовать. На самом деле, в SVN нет «ветвления», и действительно, было бы неплохо прекратить попытки использовать Mercurial, как если бы это был SVN. Вместо ветвления у вас есть свои локальные репозитории.

...