Mercurial Release Management

Я использую mercurial для управления версиями. Я хочу иметь основную ветку разработки, а затем иметь моменты времени, соответствующие, скажем, «v1.0», «v1.01» и «v2.0», чтобы в любой момент я мог опустить, скажем, «v2.0» "и устраните в нем несколько ошибок. Я слышал, что некоторые люди говорят, что мне нужны теги, некоторые говорят, что мне нужны закладки, другие говорят, что мне нужны именованные ветки, а третьи говорят, что мне просто нужно поддерживать несколько клонированных репозиториев.

С моей точки зрения, Несколько клонированных репозиториев кажутся плохим выбором, потому что одна вещь, которая мне нравится в DVCS, заключается в том, что после клонирования репозитория у вас есть вся прошлая история и вы можете полностью восстановить с чьего-либо ноутбука, если ваш центральный сервер сгорит. Если ваше репо разделено повсеместно, я чувствую, что вы теряете это преимущество, если только вы не ожидаете, что люди будут клонировать 5 репозиториев и поддерживать их на своих компьютерах локально. Меня это беспокоит, потому что большинство людей говорят, что это хороший способ сделать это, но логически это не имеет для меня смысла. (Я понимаю, что это неправильный способ делать резервные копии, но отсутствие полного доступа к части репо без возврата к серверу кажется мне странным)

Итак, для меня способ хранить все вместе должен быть либо теги, либо именованные ветви, либо закладки. Однако я не могу их различить. Люди склонны объяснять закладки как «что-то вроде тегов, с некоторыми оговорками», а именованные ветви - как своего рода движущийся тег, что, вероятно, лучше сделать с клонами.

Мне очень нравится ветвление в стиле git (одно репо, несколько ответвлений от него), однако я не хочу прибегать к странным плагинам или хакам, чтобы он выглядел как git. Я хочу понять правильный ртутный путь.

Бонус: как «мелкомасштабные» ветки вписываются в микс, т.е. вы хотите работать над небольшой функцией в ее собственной ветке?

10
задан Jade Somath 9 November 2010 в 00:38
поделиться