Рабочий процесс для работы с двумя версиями проекта в Mercurial - PullRequest
5 голосов
/ 16 января 2012

У меня есть приложение версии 1.0. Теперь мне нужно начать работу с версией 2.0, но в то же время поддерживать и исправлять ошибки в версии 1.0.

Исправления ошибок из 1.0 будут включены в выпуск 2.0, но никакие новые функциональные возможности не будут перенесены из выпуска 2.0 в 1.0.

Я понимаю, как работают ветви, однако мне нужно иметь возможность работать с обеими версиями одновременно, поэтому переключение между ветками в одной рабочей папке нецелесообразно. Я хочу иметь возможность запускать обе версии кода одновременно.

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

Должен ли я просто клонировать репозиторий в новую папку для версии 2.0 и установить ветку на ту, что для 2.0 выпуска?

Я немного новичок в Mercurial, поэтому, пожалуйста, прости меня, если это звучит немного наивно.

1 Ответ

7 голосов
/ 16 января 2012

Должен ли я просто клонировать репозиторий в новую папку для версии 2.0 и установить для него ветку для версии 2.0?

Да, отдельный клон для каждого основного выпуска будетпросто хорошо.Тем не менее, вы должны держать основную разработку в default ветви и использовать именованные ветви для каждого основного выпуска.Позвольте мне выполнить рабочий процесс:

Когда ваша версия 1.0 будет готова, вы выполните

$ cd ~/src/foo
$ hg tag 1.0
$ hg push http://your-server/foo

, и вы сможете продолжить работу в этом клоне до версии 2.0.Когда вы обнаружите, что вам нужно исправить ошибку в 1.0, вы делаете

$ cd ~/src
$ hg clone http://your-server/foo foo-1.x
$ cd foo-1.x
$ hg update 1.0
$ hg branch 1.x
$ hg commit -m "Starting 1.x branch"
# now fix the bug... left as an exercise to the reader :)
$ hg commit -m "Fixed issue123"
# do QA to test the bugfix, make more commits as necessary
$ hg tag 1.1
$ hg push --new-branch
# make a release

Флаг --new-branch необходим только при первом нажатии.Он сообщает Mercurial, что вы действительно хотите создать новую постоянную ветвь в истории.

Теперь вы хотите добавить исправление в другой репозиторий:

$ cd ~/src/foo
$ hg pull http://your-server/foo
$ hg merge 1.x
$ hg commit -m "Merge with 1.1"

Используя именованная ветка для серии 1.x, вы всегда можете использовать hg update 1.x, чтобы перейти к последней ревизии в этой ветке.Подумайте о 1.x как о «плавающем теге», который всегда указывает на самый верхний набор изменений в этой ветви.

Этот рабочий процесс описан на стандартной вики-странице .

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