2012-09-24 26 views
2

在OS:Ubuntu的12.04HOWTO同步數據庫,如果它不工作

我上了一個Drupal部署(直播網站)和臨時環境(測試網站)我服務器。每次我從我的暫存網站上進行更改時,我都想按照以下說明自動同步數據庫:http://ben.kulbertis.org/2011/10/synchronizing-a-mysql-database-with-git-and-git-hooks/

我使用的設置完全相同(根據我的設置當然有相應的設置和路徑)。從網站

報價:

讓我們開始前提交。預提交鉤子將在執行提交之前直接運行腳本。編輯你的預先提交鉤子:

[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

我測試了我放在鉤子中的命令。他們應該正常工作。

任何方式來調試出了什麼問題?

+0

你能弄清楚出了什麼問題嗎?我試圖調試完全相同的情況 - 相同的鉤子和相同的邏輯。 –

回答

0

對於「後合併」,如果你運行一個「混帳拉」,並已經是最新的,那麼「後合併」鉤子將無法運行。

看起來'預先提交'鉤子將運行,如果您的存儲庫中沒有文件已更改。只要確保腳本中的任何命令之後沒有空格。

這真是令人失望,我很願意看到一個「預拉」鉤子和「預提交」鉤子,更改庫的兩個運行irregardless。

然後,我不是開發者,所以我可能會在這裏錯過一些東西。 。 。

編輯:只是測試這個,以確保我有正確的。

+1

爲什麼在這種情況下,如果您已經是最新的,您是否想要進行合併後?如果[數據庫] .sql在你正在合併的分支中沒有改變,那麼沒有理由運行mysql來將更改提交到數據庫。 –