Хуки в Git

Опубликовано admin - ср, 09/09/2020 - 21:52

Часто приходится копировать данные по сайту в 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. Пример проверки работоспособности elastic search посредством bash и cron (вторник, декабря 26, 2023 - 21:49 ),

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

читать...
# 2. Хуки в Git (среда, сентября 9, 2020 - 21:52 ),

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

читать...
# 3. Сам себе хостер 2. Настройка phpmyadmin, mysqli. (понедельник, сентября 7, 2020 - 21:33 ),

Phpmyadmin.

В первой части  читать...

# 4. В пути директории с точкой Error 403! (воскресенье, декабря 22, 2019 - 19:07 ),

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

читать...
# 5. Копирую, копирую, копирую… (вторник, июня 12, 2018 - 09:59 ),

Сколько времени приходится тратить на копирование данных, перед тем как приступить к их модификации, перенос или восстановление? Много. читать...

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