Крюк для создания / добавления файла дампа базы данных в репозиторий на git pull - PullRequest
2 голосов
/ 05 июня 2011

Моя цель - минимизировать количество шагов, необходимых для локального клонирования моего сайта + базы данных.

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

Я предполагаю, что мне нужно выполнить следующие действия на удаленном компьютере, когда я запускаю git pull на локальном компьютере до доставки хранилища:

  • Создать файл дампа базы данных, например, dump.sql (выполняя mysqldump)
  • Добавить dump.sql в хранилище
  • Записать dump.sql в хранилище

… и только после этого доставьте запрос на локальный компьютер.

Какой тип git hook я должен использовать для этого? Буду также признателен за дополнительный опыт работы с таким сценарием.

1 Ответ

0 голосов
/ 18 июня 2011

git help hooks перечисляет типы хуков и как они работают, но нет хука, который вы можете использовать, чтобы делать то, что вы хотите (вам понадобится что-то вроде pre-upload, которое будет выполнено git-upload-pack ).

Однако на сервере git-upload-pack можно создать сценарий-обертку, который выполняет необходимые действия и затем выполняет настоящую команду git-upload-pack:

  1. найти исполняемый файл git-upload-pack
  2. переименуйте его в git-upload-pack.real
  3. создайте новый скрипт с именем git-upload-pack где-нибудь в PATH, который выполняет следующие действия:
    1. используйте аргументы, чтобы найти репозиторий Git
    2. cd в репозиторий Git
    3. , если hooks/pre-upload существует и является исполняемым файлом:
      1. запустить его
      2. если хук вышел с ненулевым статусом:
        1. выводит сообщение об ошибке со стандартной ошибкой
        2. выход с ненулевым возвращаемым значением
    4. запустить git-upload-pack.real с исходными аргументами командной строки
  4. создайте hooks/pre-upload скрипт в вашем репозитории Git, который делает все, что вы хотите
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...