Использование хуков и команд обтекания в Mercurial

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

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

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

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

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

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам