Мне интересно, если и как я могу добиться следующего в Github. У меня есть Git-репозиторий с именем Application
. У меня есть главная ветка с папкой Deployments
- эта папка должна быть всегда пустой, без файлов в ней.
Разработчики затем создают ветку из master, и обычно разработчики добавляют файлы в эту папку Deployments
и фиксируют эти файлы в своей ветви функций. Как только разработчик завершит разработку функции, он сделает запрос на включение функции объединения в мастер. На данный момент разработчик вручную очистит содержимое папки Deployments
перед выполнением PR. Я хотел бы автоматизировать это решение, чтобы гарантировать, что когда разработчик сделает запрос на извлечение, будет запущен некоторый рабочий процесс, который либо удалит содержимое папки Deployments
, либо уведомит разработчика о том, что в этой папке есть файлы, и объединение не может бывает. Можно ли этого достичь?
Я прочитал о pre-commit
git-хуках и создал один согласно приведенному ниже сценарию оболочки. Он работает нормально, но только частично - если я локально извлекаю master и добавляю файлы в папку Deployments
, когда я пытаюсь зафиксировать это, фиксация будет отклонена - это здорово, однако, если я нахожусь в ветке функций, я добавляю файлы и подтолкнули их к ветви функции (что является ожидаемым рабочим процессом разработчика), затем я могу объединить функцию с мастером, и файлы окажутся в Deployments
на мастере, что я хочу предотвратить.
Вот хук git до фиксации:
#!/bin/bash
DIR="Deployments"
BRANCH=$(git branch | grep \* | cut -d ' ' -f2)
if [ "${BRANCH}" = "master" ]; then
if [ "$(ls $DIR)" ]; then
echo "The directory: $DIR - is not Empty and cannot be merged to Master"
exit 1
else
echo "The directory: $DIR - is Empty"
fi
else
echo "on another branch: $BRANCH"
fi