2

OS: Ubuntu 12.04

サーバーに drupal 展開 (ライブ Web サイト) とステージング環境 (テスト Web サイト) があります。ここで指示されているように、ステージングWeb サイトから変更をプルするたびに、データベースを自動的に同期したいと考えています。-フック/

私が使用するセットアップはまったく同じです(もちろん、私のセットアップに従った設定とパスがあります)。

ウェブサイトからの引用:

事前コミットから始めましょう。pre-commit フックは、コミットが実行される直前にスクリプトを実行します。pre-commit フックを編集するには:

[your editor] /path/to/your/repo/.git/hooks/pre-commit

それでは、プリコミットスクリプトを書きましょう。MySQL データベースを git リポジトリにダンプし、追加してコミットするようにシステムに指示します。

#!/bin/sh
mysqldump -u [mysql user] -p[mysql password] --skip-extended-insert [database] > /path/to> /your/repo/[database].sql
cd /path/to/your/repo
git add [database].sql

それでは、マージ後のスクリプトを書きましょう。最新の変更のために、MySQL ダンプをローカル データベースに復元するようにシステムに指示します。マージ後のフックを次のように編集します。

[your editor] /path/to/your/repo/.git/hooks/post-merge

そして書く:

#!/bin/sh
mysql -u [mysql user] -p[mysql password] [database] < /path/to/your/repo/[database].sql

しかし、コミットしてからプルすると、何も起こらないようです。マージ後フックとコミット前フックは、コミットとプルを実行するデプロイメント リポジトリのフック ディレクトリにあります。どちらにも実行権があります。chmod +x /path/to/hook

フックに配置したコマンドをテストしました。それらは正しく動作するはずです。

何が問題なのかをデバッグする方法はありますか?

4

1 に答える 1

0

' post-merge ' の場合、' git pull ' を実行して既に最新の状態になっている場合、' post-merge ' フックは実行されません。

リポジトリ内のファイルが変更されていない場合、「pre-commit 」フックが実行されるようです。スクリプト内のコマンドの後にスペースがないことを確認してください。

本当にがっかりです。レポジトリへの変更に関係なく実行される ' pre-pull ' フックと ' pre-commit ' フックを見てみたいです。

繰り返しますが、私は開発者ではないため、ここで何かが欠けている可能性があります。. .

編集:これをテストして、正しいことを確認してください。

于 2013-01-30T18:27:41.330 に答える