В нашем репозитории есть пользовательские проверки состояния, которые запускаются в зависимости от количества файлов, которые мы изменили. Если количество файлов, измененных в одном PR, велико, эти проверки состояния могут привести к снижению зависимости в нисходящем направлении. (есть запросы к сервису, сделанные в этих проверках статуса). Я здесь не для того, чтобы спорить об этих проверках статуса и о том, почему они вообще существуют, в данный момент мы не можем изменить это или масштабировать сервис для обработки такой нагрузки.
Идея скрыть эти большие изменения состоит в том, чтобы добавить хук git для предварительной фиксации, который в основном получает количество файлов, которые отличаются между текущей веткой и кончиком удаленного мастера. Затем мы хотим выдать ошибку, если число этих файлов больше определенного числа.
В основном, я собираюсь сделать это, используя следующие команды в git hook
# Refresh local reference to origin/HEAD
git fetch
# Get the diff between the tip of current branch and the tip of origin/HEAD and count them
git diff --name-only --cached origin/HEAD | wc -l
...
Кажется, это работает, но у меня есть пара вопросов: 1. Есть ли скрытые ошибки с этим методом? Я хочу убедиться, что покрываю все случаи, когда мы можем предотвратить открытие запроса извлечения с разницей в количестве файлов> X. 2. Безопасно ли вызывать git fetch в git hook? Мне нужен какой-то способ, чтобы гарантировать, что локальная ссылка на источник / HEAD не устарела, иначе ловушка не потерпит неудачу, но запрос на получение все еще может иметь непристойно большую разницу, если локальный мастер устарел.