Подтвердить что ты не робот

Mercurial Best Practices - ответвление на функцию/задание?

Я только что переключился на Mercurial из SVN. Я сделал некоторые основные вещи (импорт моего кода, совершение коммитов, получение зависания log/commit/revert/и т.д.) И чтение некоторых руководств по разветвлению/слиянию.

Теперь мой вопрос: Какой лучший ( "Mercurial" ) способ использования Mercurial? " Я не хочу следовать парадигме SVN, я хочу делать что-то" правильным ".

Я должен упомянуть, что я являюсь единственным разработчиком в большинстве своих проектов, и я использую гибкие/scrum-методы. Может быть, мой вопрос действительно должен быть , если я должен клонировать/разветвляться по каждой функции? За какой задачей? Я помню, что читал, что это должно быть в случае Git, и это позволяет существенно сохранить одновременно несколько копий и отдельные функции по сравнению с исправлениями ошибок по сравнению с любыми (т.е. Сохранить рабочая копия отдельно для каждой другой вещи, которую вы делаете). И это также, по-видимому, часть лучших методов Mercurial.

Или я мог бы просто сохранить один экземпляр, внести свои изменения и совершить многократно. Безотносительно.

Если этот вопрос слишком субъективен, я не против его закрытия, если кто-то может связать меня с некоторыми материалами для чтения о том, как лучше всего использовать Mercurial. Это то, что я хочу.

4b9b3361

Ответ 1

Говоря как (в основном) соло разработчик, я думаю, что мой ответ... да. Когда я знаю, что я делаю быстрое изменение, я делаю это в своем "основном" каталоге разработки, но если у меня есть какие-либо сомнения относительно того, как долго/сложно что-то будет, я начну с самого начала. Самое приятное, что вы действительно можете это сделать (и в любом порядке), который работает на вас. Если вы работаете в своем главном каталоге dev по длинному моду, и кто-то приходит и нуждается в быстром исправлении, просто клонируйте багажник, исправьте его, проверьте его и Боб вашего дяди!

Я с грустью оглядываюсь на свои дни с SCCS/RCS/CVS.

Я собираюсь привести 3 дизайнеров в Землю Обетованную. Они - старая школа и много лет используют Dreamweaver в общих каталогах (ужас!). В этот уик-энд мы переместим их в мир XAMPP, TortiseHG, rsync и разработки/постановки/производства.

Обновление: Я сформулировал свой ответ очень двусмысленно. Спасибо, что позвонили мне, Майкл Э.

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

Таким образом, "быстрое исправление" для меня означает обновление моего "главного" dev-dir до сундука, взлома, тестирования, нажатия на стадию на главной машине (и теста), а затем нажать на производство (и тест). В большинстве случаев быстрые исправления выполняются как анонимная ветвь.

Кстати, клонирование против локального репозитория настолько быстро, что нет причин (по моему мнению) делать что-либо еще. У меня есть один средний проект с чем-то более 7000 файлов и около 4 лет почти ежедневных коммитов от 4 разработчиков - репозиторий составляет около 200 МБ. Время клонирования (на старой и медленной машине в моем гараже) составляет 10 секунд. Я держу локальный клон удаленного мастера производства и ежечасно получаю с помощью cron. НТН.

Ответ 3

Следуйте по этой ссылке. http://hginit.com/

Джоэл Спольский четко объясняет разницу между старым централизованным VCS и DVCS.

Он также проведет вас через шаги, чтобы познакомиться с меркультурным рабочим процессом, исходящим из фона подрывной деятельности.

Ответ 4

Я нашел названные ветки, которые предпочтительнее клонирования для нескольких случаев. Если у вас есть параметры проекта, которые не проверяются в исходном управлении, клонирование требует от меня скопировать эти настройки ко всем моим клонам. Большая часть моей работы находится в Django, где наличие local_settings.py не в исходном контроле - обычная идиома. Также я нахожу, что клоны доступа не так просто, как совместное использование названных ветвей. Если я единственный разработчик, работающий над функцией, то клонирование - это хорошо. Во-вторых, мне нужен кто-то, кто мог бы помочь мне в функции, названной ветвью был бы лучшим выбором.

@k3b упоминается gitflow, и в разработке есть hg-плагин, чтобы делать то же самое в hg, который использует именованные ветки. https://bitbucket.org/yinwm/hgflow/wiki/Home

Ответ 5

Нет. Вместо ветки я бы клонировал рабочий каталог/репозиторий для ветки функции.

Я следую превосходному описанию в a-successful-git-branching-model.

Обратите внимание, что ссылка на git не указана для hg. Однако модель ветвления универсальна, только синтаксис между git и hg отличается.

[обновление 2013-01-31] Спасибо @Alex за ваш комментарий. я не знал о различиях между hg и git. Есть ли кто-нибудь там с hg-опытом, который может проверить, что ветвящийся модуль git применим к hg или нуждается в modificatoins для работы с hg (excpet синтаксис командной строки)?