Считаются ли связанные расширения Mercurial частью основного набора функций и подхода к управлению версиями? - PullRequest
6 голосов
/ 16 ноября 2009

В настоящее время я пытаюсь оценить Mercurial, чтобы почувствовать философию, которую система пытается продвигать - но одна вещь, которая меня смутила, - это наличие «расширений» в комплекте и как они вписываются в микс.

В базовом пакете Mercurial поставляется с набором функций, которые реализованы в виде расширений, но по умолчанию отключены. (См .: https://www.mercurial -scm.org / wiki / UsingExtensions # Extensions_Bundled_with_Mercurial )

Вот что меня смущает:

  • Считают ли эти расширения командой первого класса команду разработчиков Mercurial и, следовательно, являются ли они частью общего подхода Mercurial к DVCS?

  • Почему они реализованы вне функций по умолчанию и отключены по умолчанию?

Мне не нужна информация о том, как активировать расширения, это довольно просто - мне интересна логика разделения,

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

Ответы [ 2 ]

9 голосов
/ 16 ноября 2009

Рассматриваются ли эти расширения как первоклассные граждане командой разработчиков Mercurial и, следовательно, являются частью общего подхода Mercurial к DVCS?

Да, хотя мы обычно не будем пропагандировать их использование для новых пользователей, они очень полезны для продвинутого использования. Я думаю, что у всех в команде разработчиков включено расширение (по крайней мере, mq, patchbomb, а иногда и запись).

Расширения, принятые в hgext/, проверяются перед включением, и мы обычно требуем, чтобы они предоставили тесты. Но они часто принадлежат сторонним разработчикам и не обновляются командой разработчиков, за исключением изменений API в ядре hg.

Почему они реализованы за пределами функций по умолчанию и отключены по умолчанию?

Обычно мы думаем, что hg должен оставаться простым, и добавление большего количества команд может запутать пользователей (например, если у вас простой рабочий процесс, вам не нужно узнавать о mq). Но если команда считается полезной для большинства пользователей, она может мигрировать из расширения в ядро ​​(это имело место в случае деления пополам, и это относится к функциональности подпункта).

5 голосов
/ 16 ноября 2009

Почти сразу после публикации я узнал о следующей команде hg:

hg help extensions

Это содержало некоторую информацию, которую я не думаю, что доступно в справочной документации Mercurial:

Расширения по умолчанию не загружаются по разным причинам: они могут увеличить накладные расходы при запуске; они могут быть предназначены только для продвинутого использования; они могут предоставлять потенциально опасные способности (например, позволять вам уничтожать или изменять историю); они могут быть не готовы к прайм-тайм; или они могут изменить некоторые обычные поведения акций Mercurial. Таким образом, пользователь может активировать расширения по мере необходимости.

Это помогает ответить на часть моего вопроса.

...