Должен ли я просто клонировать репозиторий в новую папку для версии 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
как о «плавающем теге», который всегда указывает на самый верхний набор изменений в этой ветви.
Этот рабочий процесс описан на стандартной вики-странице .