2011-09-15 49 views
1

我使用數據庫開發項目,這些數據庫是作爲MySQL工作臺文件維護的,這是一個二進制文件。由於您無法輕易分辨出提交之間的二進制文件差異,因此需要您在提交之前更新該模式的SQL創建腳本。這樣,您可以運行SQL文件的差異來查看更改的內容。如何要求將兩個文件包含在相同的Subversion提交中?

有時,人們會忘記或懶惰,不更新SQL文件。我如何使用subversion來要求包含工作臺文件的任何提交都必須包含SQL文件?

回答

2

您可以在服務器上編寫Hook腳本以滿足此要求。

您可以使用pre-commit-hook來檢查它是否包含工作臺文件,並檢查它是否包含SQL文件以及...如果不中止提交。

+0

絕對是一個很好的解決方案..只是想確保我不忽視一個明顯的替代方案進行自定義修改的鉤子腳本第一。 –

1

雖然khmarbaise的答案正在工作,但我建議您提供更好的解決方案。不要強迫開發人員編輯SQL文件,而是嘗試自動更新它。這意味着,在構建過程的一個步驟中(假設您有一個構建過程),請檢查Workbench文件,並在其更新的情況下自動更改SQL文件。

+0

聽起來很不錯,但我不確定MySQL Workbench是否有腳本創建SQL文件的腳本。我得看看它。 –

+0

不幸的是,MySQL Workbench沒有一個強大的命令行界面,而且目前似乎無法以任何簡單的方式完成此任務。 –

+0

如果這不可行,請嘗試通過工作臺文件創建數據庫並生成SQL腳本。通常,不要在源代碼管理中放置兩個代表相同概念的項目。你沒有辦法,你應該在另一個正在改變時自動更新一個。不要相信你的開發者保持更新。 – hsalimi

0

與你的問題不同,我發現工作臺文件不是二進制文件。它們是以xml格式包含數據庫模式的壓縮文件。看到這兩個職位:Is it possible to save MySQL Workbench files as plain XML?Subversion diff for zipped xml file

+0

這是真的。我說二進制,因爲zip是一個二進制文件。如果你進入閱讀XML的zip文件,你會發現它非常反常。加上許多標籤都有一個_ptr_屬性,在每次保存時都會發生變化,渲染任何基本diff都無用,而不會過濾掉這些行。即使你做了,它仍然是一個低質量的方式來查看變化。 –

相關問題