Экспорт и импорт базы данных на Git push and pull - PullRequest
5 голосов
/ 02 сентября 2011

Мне нужно, чтобы моя база данных была синхронизирована между двумя локальными компьютерами, без использования промежуточного сервера. После некоторых исследований я подумал, что мог бы использовать крючки Git для выполнения этой задачи за меня.

В основном я хочу запустить mysqldump на git push (и добавить файл SQL в коммит) и mysqlimport на git pull в и из удаленного репозитория.

Я не мог найти какие-то конкретные крючки для этого. Я попробовал хук pre-commit, но это не добавило файл SQL в текущий коммит. Затем я попытался prepare-commit, но без удачи.

Кто-нибудь получил ответ на этот вопрос?

Ответы [ 2 ]

3 голосов
/ 27 октября 2014

В этом решении Бена Кулбертиса для выполнения работы используются git-хуки до и после слияния.Работает как шарм!

http://ben.kulbertis.org/2011/10/synchronizing-a-mysql-database-with-git-and-git-hooks/

2 голосов
/ 02 сентября 2011

Я бы написал обертку для вашей системы, может быть, "commit.php" или "git-ci.sh" или что-то в этом роде. Затем вы можете использовать bash, perl, python или php, а также все, что вам удобно, и запускать каждую команду одну за другой, заканчивая коммитом.

Я предлагаю это после того, как столкнулся с похожими проблемами при попытке добавить к коммиту, что запускается ловушка pre-commit. Кроме того, на нисходящей стороне нет крючков «толкать» или «тянуть» (я использую центральный репозиторий, так что это может сработать, если у вас есть две машины, толкающие и тянущие друг друга, как вам кажется).

У меня есть двухсторонний сценарий развертывания для одного из моих веб-сайтов, где у меня есть длинный сценарий предварительной фиксации, но на веб-сервере у меня есть подобная обертка, которая выбирает, затем проверяет фиксацию, выводит отчет и дает мне варианты слияния и rsync с другим сервером и т. д. Он заменил «тянущий» хук, который, вероятно, представляет серьезную угрозу безопасности.

Hans

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...