2010-03-25 62 views
6

這是我腦海中一個很大的問號。使用Mercurial或Git分支處理數據庫分支的標準或最佳方式是什麼?

我正在轉向Mercurial或Git,我的網絡軟件很快,有時我的分支機構需要其他分支機構不應該看到的重大數據庫更改。這樣,我不能總是與我的分支共享同一個數據庫。

是否有一些處理數據庫更改的標準方式來進行分支和克隆?你們都做什麼?我正在使用MySQL。

回答

2

爲了處理克隆,您的數據庫應該被設計爲多用戶。

對於架構中的更改,將更改作爲該存儲庫的一部分提交給該分支的架構。

然後,你必須下定決心,對於每個模式,你是否在一個數據庫,多個數據庫等中運行多個表空間?然後提交一個指向正確的指針作爲該分支中安裝配置的一部分。

+0

你是指什麼意思?你在談論改變每個分支的DSN嗎? – 2010-03-25 17:24:51

+0

「爲多用戶設計」是什麼意思?你的意思是,如果每個開發者都有一個分支,它應該適用於每個分支? – 2010-03-25 17:45:25

+0

回購的克隆就是這樣一個完全相同的克隆,內部分支。如果擔心的是處理克隆,那麼(我想)擔心的是多個開發人員會一次訪問數據庫,或者具有多個克隆存儲庫的單個開發人員將從多個正在運行的應用程序的副本訪問數據庫。對於這個實例,忽略分支,如果您的數據庫是多用戶的,則處理克隆的存儲庫將被照顧。 – kmarsh 2010-03-26 12:11:50

5

使用數據庫changset工具可以是很有益的。我使用liquibase(http://www.liquibase.org),在工作中管理數據庫的版本控制。我會熱烈向任何人推薦該工具。 Liquibase確實支持變更集和可配置的回滾場景。但是,它是管理模式的工具,而不是實際的數據。我不會試圖用它來保持表格數據是最新的。

但是,我仍然覺得你最好的選擇是使用liquibase,並且對於不同的源代碼分支有不同的模式。

+0

在更改日誌中解決合併衝突很容易嗎?它是否具有用於結帳的內置解決方案? – inf3rno 2014-02-04 11:24:25

0

數據庫模式本身(記錄在)一個數據庫,其結構或多或少由SQL標準的INFORMATION_SCHEMA定義。

現在,DBMS的設計非常慎重,只允許在任何一個單一時間點使用一個數據庫值。由於該目錄本身「僅僅是INFORMATION_SCHEMA數據庫的數據庫值」,所以SQL系統在任何一個單一時間點都非常有意地支持一個單一的數據庫結構。

相關問題