Часто приходится копировать данные по сайту в 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/, иначе работать не будет.
Удобно согласитесь!
Пришли на работу склонировали изменения и продолжайте работать.
В следующей статье напишем хук для замены базы данных из репозитория при его клонировании из удаленного репозитория.
350 просмотров
Взаимосвязанные материалы
Наиболее запоминающиеся и нужные команды для настройки сервера для сайта (nginx, mysql, apache, docker). читать...
Пример проверки работоспособности elastic search.
читать...Часто приходится копировать данные по сайту в git репозиторий или переносить копию на локальный сервер или рабочий?
читать...Phpmyadmin.
В первой части /node/958 
читать...Столкнулся с проблемой при работе с Bitrix, если в пути имеется точка (как правило это директория .default) то apache выдает ошибку:
читать...