Использование хуков и команд обтекания в Mercurial - PullRequest
4 голосов
/ 04 октября 2010

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

Другими словами, каковы критерии принятия решения о том, использовать ли хуки или переноситькоманда?

Пожалуйста, перечислите случаи, когда один подход является единственным вариантом.Один случай, о котором я могу подумать, - это добавить новые аргументы для существующих команд.Вы также можете изменить / удалить аргументы, например, я по умолчанию log на log -g, но graphlog прерывается при наличии некоторых «несовместимых» аргументов (см. graphlog.check_unsupported_flags), поэтому я добавил оболочку log для удаления-g в этих случаях, потому что принудительный аборт является преступлением против человечества.

Такое чувство, что крючки более чистые.Хиты Python запускаются в процессе hg, поэтому проблем с производительностью нет.И хотя extensions.wrapcommand легко создавать для создания командных оболочек, тривиально создавать / отключать хуки и настраивать порядок их применения (в первую очередь они должны быть автономными).

И вот цитата из hgrc doc , которая рекомендует стандартные перехваты через перехваты команд до / после команды, но это также относится и к перехватчикам через обертку:

... hooks like "commitбудет вызываться во всех контекстах, которые генерируют коммит (например, тег), а не только команду фиксации.

Также я предполагаю, что хуки не подпадают под действие GPL (или они есть?), тогда как командаОболочки в расширениях .

(я надеюсь, что пользователь 1.5k + может создать тег mercurialhooks. Фанаты Git избили нас githooks.)

1 Ответ

4 голосов
/ 04 октября 2010

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

Если кто-то пишет на python, то между хуком и расширением есть небольшая разница:

  • любой может глубоко погрузиться в ртутные внутренние органы
  • оба требуют, чтобы пользователи изменили свои .hgrc, чтобы включить их
  • оба могут обернуть / перехватить команды

Я думаю, что ваша модификация аргумента команды журнала могла бы быть сделана с помощью ловушки pre-log в дополнение к выполнению в качестве расширения.

TL; DR: если вы пишете на python, разница невелика, и если вы не хуки, ваш единственный вариант.

...