Mercurial workflow help - как сделать тег из тега и доставить его в центральное хранилище? - PullRequest
0 голосов
/ 11 июля 2011

Я новичок в HG, я ищу несколько советов о том, как справиться с этим сценарием.

У нас есть центральное репо, размещенное в Килне. Трое парней из моей команды отредактировали код и, в конце концов, готовы с нашим кодом, который мы помечаем и выпускаем как Version1. Затем мы с радостью начинаем работать над нашей следующей основной версией. Во время работы над ним необходимо исправить критическую ошибку в Version1, чтобы Джеймс клонировал репо, используя hg clone -r Version1 <a href="http://centralrepo" rel="nofollow">http://centralrepo</a>, где он вносил свои изменения, и помечал его как Version1.1.

Теперь, как Version1.1 возвращается к центральному репо? Использование hg push вызывает прерывание, потому что есть две удаленные головки. Без этого в центральном репо, Даг никогда не сможет прийти и исправить Version1.1, если это когда-нибудь понадобится.

Как я могу изменить свой процесс так, чтобы все мои теги всегда сохранялись в центральном репо и легко помещались в ветку dev?

UPDATE / EDIT

По предложению Джоэла я сделал следующие изменения:

На веб-сайте Kiln я создаю свой основной активный репозиторий. Когда у меня есть код, я создаю из него новую ветку.

Я клонирую свою ветку ActiveDev: hg clone <a href="http://activeDev" rel="nofollow">http://activeDev</a> code-activeDev Я клонирую свою Стабильную ветку: ht clone <a href="http://stable" rel="nofollow">http://stable</a> code-stable

Я установил тег в моей стабильной ветке: hg tag V1.0, а затем переместил его в стабильную ветку и в активную ветку dev. При переходе к activeDev я использую команду -f. Теперь обе ветви идентичны.

Я делаю hg pull и запускаю новую функцию в ActiveDev. Затем верните эту функцию обратно в центр:

hg com hg push

Стабильный получает исправление ошибки, а затем подталкивает к своему репо, используя те же две команды. Теперь, когда я пытаюсь перенести это исправление в ветку activeDev, мне снова выдается сообщение «у вас две головы, используйте -f». Однако, если я заставлю его, новая функция, которую я нажал ранее в activeDev, сдувается исправлениями, которые я сделал в stable.

Я сделал что-то не так? Я где-то пропускаю шаг?

1 Ответ

1 голос
/ 11 июля 2011

По сути, вам нужно объединить исправление, чтобы снова была только 1 голова.Существует способ управления 2 ветками , который облегчает исправление ошибок в выпущенных версиях (параллельно с разработкой):

Процесс, который я использую, заключается в создании именованной ветви с именем Stable вдополнение к ветке default.Я работаю над новыми функциями и еще много чего в ветке default.Всякий раз, когда я делаю фактический выпуск кода, я объединяю его с веткой Stable и отмечаю только такие вещи, как v1.0, v1.1 и т. Д. В этой ветке.

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

Если вы начнете использовать это, то при первом запускепередвиньте эту именованную ветвь к центральной, вам придется использовать hg push --force, но только один раз.

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