Использовать Git режим очистки сообщения фиксации с помощью фиксации-msg

git help commit говорит следующее:

--cleanup=<mode>
   This option determines how the supplied commit message should be
   cleaned up before committing. The <mode> can be strip, whitespace,
   verbatim, or default.

   strip
       Strip leading and trailing empty lines, trailing whitespace,
       and #commentary and collapse consecutive empty lines.

   whitespace
       Same as strip except #commentary is not removed.

   verbatim
       Do not change the message at all.

   default
       Same as strip if the message is to be edited. Otherwise
       whitespace.

Я хотел бы определить, какой режим очистки будет применяться из commit-msg hook (правильно используя commit.cleanup значение конфигурации при необходимости). Я выполняю некоторые проверки в своих сообщениях о фиксации, и я хочу убедиться, что я вижу, что именно планирует использовать Git.

В качестве альтернативы, я приму способ захватить текст сообщения коммит-сообщения после очистки (возможно, я могу обмануть Git, чтобы очистить его для меня?). Это было бы здорово для моего варианта использования, так как тогда мне не пришлось бы беспокоиться о повторной реализации любых режимов очистки.

Ответ 1

К сожалению, в текущем (ish) git источнике, режим очистки не передается на крючок каким-либо образом. Аргумент --cleanup сохраняется только в переменной <static, local to builtin/commit.c) cleanup_mode и не экспортируется (например, как аргумент или переменная среды) на различные крючки.

(Это должно быть легко добавить переменную среды, содержащую этот параметр. Если вы хотите поэкспериментировать с этим самостоятельно, см. builtin/commit.c function parse_and_validate_options; поместите вызов setenv() с соответствующими аргументами.)