Отредактируйте свой репозиторий (hg config --local
) или свою пользовательскую конфигурацию (hg config --edit
) и включите ловушку предварительной фиксации (hg help config.hooks
):
[hooks]
pre-commit=/path/to/check-added-lines
В хуке предварительной фиксации выполните следующую версию команды annotate с наборами wdir()
revset и modified() + added()
: (hg help revsets
и hg help filesets
):
hg ann -r 'wdir()' 'set:modified() + added()'
Это даст вам вывод аннотации, где только что добавленные строки (т.е. строки, которые существуют только в вашем рабочем каталоге) имеют +
после номера ревизии. Так что в check-added-lines
вы можете сделать что-то вроде, например,
#!/bin/bash
IFS=$'\n'
for line in $(hg ann -r 'wdir()' 'set:modified() + added()' | grep '^[0-9]*+' | sed 's/^[0-9]\++ *: //'); do
if ! run_checker "$line"; then
exit 1
fi
done
exit 0
с выбранной вами программой run_checker
.
Хотя я не решаюсь рекомендовать это, если вы готовы терпеть ошибки и потенциальную поломку API (Mercurial считает, что его поведение явно не задокументировано как экспериментальное, его CLI и его стандартный вывод - API, который мы стараемся поддерживать очень стабильным ), вас также может заинтересовать новое и экспериментальное расширение для исправлений, которое, я думаю, было создано с учетом вашего варианта использования (hg help --extension fix
).