Git: Удалить содержимое папки перед слиянием с мастером - PullRequest
0 голосов
/ 06 сентября 2018

Мне интересно, если и как я могу добиться следующего в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...