Похоже, вы поняли концепции отлично, но у вас есть некоторые странности и некоторые вопросы, я приведу их в виде списка ниже:
- commit не принимает опцию --rev. Он фиксирует текущий рабочий каталог как новый набор изменений, чей родитель (или родители, если это слияние) возвращает то, что
hg parents
возвращает, то есть всегда то, к чему вы в последний раз hg update
отредактировали.
- вашему
hg push --rev bugfix1 -f
не потребуется -f
в очень новых (1.5+) версиях Mercurial. Исторически предупреждение «вы создаете новую голову» обычно означало, что вы забыли объединить, но теперь, если новая глава - это новая именованная ветвь, предупреждение подавляется.
- Если бы я был вашим человеком, который исправлял аварийную ошибку на моей локальной машине, я бы просто создал новый клон, выполнил ветвь и исправил там. Если вы настроили поддержку своего веб-сервера / веб-приложения, вы можете легко / автоматически разрешать новые экземпляры в новых местах пути
- В вашей промежуточной среде я осознаю желание, чтобы они тестировали исправление независимо от функции, и это хорошая идея, ваша группа обеспечения качества не должна объединяться. Сделайте так, чтобы разработчики объединились, и чтобы команда QA подтвердила внесенные изменения в свою рабочую область. Например, набор изменений разработчика, созданный на шаге 3 DEV, уже обеспечивает правильную интеграцию исправления ошибки и того, что должно быть, поэтому команда QA ревизует эту ревизию, которая будет находиться в ветке «по умолчанию». Аналогично, после того, как QA утвердит исправление и будет готово перейти к функции, попросите их вытащить из dev набор изменений, созданный на шаге 5. dev.
Помните, что слияние - это тоже кодирование - человек, выполняющий слияние, делает выбор в отношении того, что должно и не должно быть. Специалисты по тестированию могут быть способны на это, но это работа разработчика. Кроме того, почему это дважды? Обычная передача обслуживания для этого - что-то вроде "QA, вытащите ревизию 897a9d9f9a7 и протестируйте, пожалуйста - разработчики". Если вы хотите получить фантазию, у вас может быть такой тег, как «readyforQA», чтобы разработчики двигались по ветке «по умолчанию» по ходу дела (в этом примере они будут hg tag
после своих шагов 3 и 5 и дадут QA знать, что есть новые вещи для тяги.
Единственный совет, который я бы дал вам, - не пытайтесь чрезмерно спроектировать процесс. DVCS приводят к беспорядочному способу работы, сначала это немного пугает, но имеет тенденцию работать. Вы обнаружите, что у подгрупп и пар людей есть клоны, о которых вы никогда не знали, и, в конце концов, если у вас есть несколько жестких правил, таких как «ничего не идет в производство без первого прохождения QA», то все остальное работает само собой.