Каковы относительные плюсы и минусы использования хуков по сравнению с использованием расширения, заключающего в себе команду для конкретной задачи?
Другими словами, каковы критерии принятия решения о том, использовать ли хуки или переноситькоманда?
Пожалуйста, перечислите случаи, когда один подход является единственным вариантом.Один случай, о котором я могу подумать, - это добавить новые аргументы для существующих команд.Вы также можете изменить / удалить аргументы, например, я по умолчанию 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
.)