Я бы порекомендовал вам взглянуть на пост Стива Лоша о ветвлении в Mercurial: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/
Он просматривает различные типы веток (клоны, закладки, именованные ветви, анонимные ветви), а также команды, которые вы запускаете для каждой из них. У каждого из них есть свои плюсы и минусы. Локальные клоны хороши, если вы являетесь единственным разработчиком, но они не так полезны в рабочем процессе, когда над веткой нужно работать более чем одному разработчику. Утверждение, что клоны повсеместно лучше названных ветвей, - миф. Вы должны найти модель ветвления, которая соответствует вашему рабочему процессу.
Обновление:
Если вы хотите сделать локальные клоны, вы можете переместить свои изменения, используя hg push из нового рабочего пространства (при условии, что у вас есть папка Projects
и репозиторий с именем test
):
Projects> hg clone test test-new-feature
Projects> cd test-new-feature
Projects/test-new-feature> <do some work>
Projects/test-new-feature> hg commit -m "Work is done."
Projects/test> <Might need a pull/merge here>
Projects/test-new-feature> hg push
Если в репо test
есть изменения, вам нужно вытащить / объединить их, прежде чем нажимать.
Вы также можете hg pull
из исходного рабочего пространства:
Projects> hg clone test test-new-feature
Projects> cd test-new-feature
Projects/test-new-feature> <do some work>
Projects/test-new-feature> hg commit -m "Work is done."
Projects/test-new-feature> cd ../test
Projects/test> hg pull ../test-new-feature
Это может создать несколько голов в репо test
, и вам потребуется слить / зафиксировать.
Projects/test> hg merge
Projects/test> hg commit -m "Merged in new-feature."
Либо хорошие варианты. Я мог бы рекомендовать тянуть, а не толкать. Основным отличием для меня является расположение шага слияния. Я думаю, что использование функции репозитория делает историю немного более читабельной.