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