Хуки в Git

Опубликовано admin -

Часто приходится копировать данные по сайту в git репозиторий или переносить копию на локальный сервер или рабочий?

Для упрощения и оптимизации этого процесса я решил использовать хуки системы git. Хуки этот как в друпал события которые срабатывают при определённых методах.

В моём случае используется хук pre-commit. Для тех кто не знает, что такое коммит в git  советую прочитать соответствующий раздел руководства git - https://github.com/git-guides/git-commit.

В нем описывается смысл фиксации изменений в локальном репозитории. 

Итак допустим у вас все настроено, вы внесли какие-то изменения, которые необходимо "закоммитить". 

Однако, у нас имеется еще база данных, которую не так то просто на первый взгляд  добавить в репозиторий.

Для этого можно использовать следующие два скрипта на языке bash (указанные скрипты необходимо продублировать в качестве символических ссылок по адресу .git/hooks/):

#!/bin/sh

# db info
host="localhost"
user="****"
pass="*********"
name="********"

# path info
project="/var/www/site.ru"
dumppath="db_backup/dump"
dumpfile="oncommit-dump.sql"

# cmd
mysqldump="/usr/bin/mysqldump"
mysql="/usr/bin/mysql"

dumpoptions="--skip-extended-insert"

  и второй скрипт:

#!/bin/sh
#
#       01/09/2020
#       Auto dump db on commit
#


eval ". $(dirname "$0")/config" &&
echo "dumping $name database ..." &&

##
##
mkdir -p "$project/$dumppath" &&

if [ -z $pass ]
then
        eval "$mysqldump -h $host -u $user $dumpoptions $name > $project/$dumppath/$dumpfile"
else
        eval "$mysqldump -h $host -u $user -p$pass $dumpoptions $name > $project/$dumppath/$dumpfile"
fi &&

gzip -f $project/$dumppath/$dumpfile &&

cd "$project" &&
git add "$dumppath/$dumpfile.gz" &&
echo "$name database dumped"
#exit 0

Как видно, первый файл это набор настроек для базы данных и путей к папке с копией базы данных. Оба файла размещаются в директории .git/hooks

Второй скрипт предназначен собственно для резервного копирования файла "oncommit-dump.sql".

После это при вводе команды commit, будет запушен скрипт создания копии базы данных, например:

git commit -m "Change danland.theme file"

Затем  останется ввести команду:

git push origin master

и ваш удаленный репозиторий обновлен. Единственное, указанные скрипты необходимо продублировать в качестве символических ссылок по адресу .git/hooks/, иначе работать не будет.

Удобно согласитесь!

Пришли на работу склонировали изменения и продолжайте работать.

В следующей статье напишем хук для замены базы данных из репозитория при его клонировании из удаленного репозитория. 

Взаимосвязанные материалы

# 1 . Сам себе хостер 3. Лучшие команды для настройки сервера! ( ),
Наиболее запоминающиеся и нужные команды для настройки сервера для сайта (nginx, mysql, apache, docker). читать...
# 2 . Пример проверки работоспособности elastic search посредством bash и cron ( ),

 Пример проверки работоспособности elastic search.

читать...
# 3 . Хуки в Git ( ),

Часто приходится копировать данные по сайту в git репозиторий или переносить копию на локальный сервер или рабочий?

читать...
# 4 . Сам себе хостер 2. Настройка phpmyadmin, mysqli. ( ),

Phpmyadmin.

В первой части /node/958&nbsp читать...

# 5 . В пути директории с точкой Error 403! ( ),

Столкнулся с проблемой при работе с Bitrix, если в пути имеется точка (как правило это директория .default) то apache выдает ошибку:

читать...
На разработку сайта! Скидки до 20%!