Каковы относительные плюсы и минусы для использования перехватчиков против использования расширения, которое обертывает команду для определенной задачи?Использование команд hooks vs. wrapping в mercurial
Другими словами, каковы критерии для определения того, использовать ли крючки или обернуть команду?
Также перечислены случаи, когда один подход является единственным вариантом. В одном случае я могу добавить новые аргументы для существующих команд. Вы также можете изменить/удалить аргументы, например, по умолчанию log
- log -g
, но graphlog
отменяет при наличии некоторых «несовместимых» аргументов (см. graphlog.check_unsupported_flags
), поэтому я добавил обертку log
для удаления -g
в таких случаях, поскольку принудительный аборт является преступления против человечности.
Чувствуется, что крючки более чистые. Перехватчики Python запускаются в hg-процессе, поэтому проблема с производительностью отсутствует. И хотя для создания командных оболочек легко использовать extensions.wrapcommand
, тривиально создавать/отключать перехватчики и настраивать порядок их применения (они должны быть в первую очередь автономными).
А вот цитата из hgrc doc, что рекомендует стандартные крюки над командными крюками до/после, но это также относится и к крючкам над оберткой:
... крючки, как «совершить» будут называться во всех контекстах которые генерируют фиксацию (например, тег), а не только команду фиксации.
Также я предполагаю, что крючки не подвергаются GPL (или они?), Тогда как командные обертки в extensions are.
(я надеюсь, что 1.5k + пользователь может создать mercurialhooks
тега. Git мальчики вентиляторных били нас githooks
.)
retagged, но слегка изменил имя в соответствии с соглашениями. –
@Niall: спасибо! Я думаю, что мальчики-гиты не очень заботятся об условностях :) –