我需要我的數據庫跨兩臺本地計算機同步,而不使用中間的服務器。經過一番研究,我認爲我可以使用Git掛鉤來完成我的任務。導出和導入數據庫上的Git推和
我基本上想要的是運行git push
mysqldump
(並添加SQL文件,以提交)上git pull
和mysqlimport
,並從遠程倉庫。
我找不到任何具體的鉤子。我嘗試了pre-commit
鉤子,但是這並沒有在當前提交中添加SQL文件。然後我嘗試prepare-commit
,但沒有運氣。
有沒有人得到這個答案?
我需要我的數據庫跨兩臺本地計算機同步,而不使用中間的服務器。經過一番研究,我認爲我可以使用Git掛鉤來完成我的任務。導出和導入數據庫上的Git推和
我基本上想要的是運行git push
mysqldump
(並添加SQL文件,以提交)上git pull
和mysqlimport
,並從遠程倉庫。
我找不到任何具體的鉤子。我嘗試了pre-commit
鉤子,但是這並沒有在當前提交中添加SQL文件。然後我嘗試prepare-commit
,但沒有運氣。
有沒有人得到這個答案?
該解決方案由Ben Kulbertis採用預提交和合並後的git鉤來完成這項工作。奇蹟般有效!
http://ben.kulbertis.org/2011/10/synchronizing-a-mysql-database-with-git-and-git-hooks/
我會爲你的系統編寫一個包裝,也許是「commit.php」或「git-ci.sh」或其他東西。然後你可以使用bash或者perl或者python或者php或者任何你喜歡的,並且一個接一個地運行每個命令,並且完成提交。
我試圖添加到提交前提交鉤子正在運行類似的問題後,我建議這個。另外,在下游沒有「推」或「拉」鉤(我使用中央存儲庫,所以如果你有兩臺機器互相推拉)。
我有一個雙面部署腳本爲我的網站之一,我有一個很長的預提交腳本,但在Web服務器上我有一個這樣的包裝提取,然後檢查提交,輸出報告,並給出我可以選擇是否與其他服務器進行合併和rsync,等等。它取代了一個「拉」掛鉤,這可能是一個重大的安全隱患。
漢斯
謝謝你的接吻。任何想法,我可以閱讀更多關於包裝? –
我寫過我的PHP(調用exec()和passthru()),因爲我使用PHP最多,對我來說很簡單。只要使用任何腳本語言對你來說最簡單,可能是python,ruby,bash,perl等等。使用該語言的能力,調用git命令。例如在php中,我會調用'exec('/ usr/bin/git fetch');'在下一行緊跟'exec(「/ usr/bin/git log --name-only --format = oneline ..origin/master> {$ log}「);'然後經過一些檢查,'exec(」/ usr/bin/git merge origin/master「);' – Hans
最後,你可以做這樣的passthru (「/ usr/bin/rsync --exclude'/ db_backup_svn/*'--exclude'.git'-e ssh -avzp --delete/home/website/[email protected]:/ home/website /」) ;' – Hans