2017-12-27 232 views
0

首先,我只討論我的開發數據庫(development.sqlite3)。Ruby On Rails - SQLite3數據庫和版本控制

我最近剛剛意識到,默認情況下,數據庫不受版本控制(在創建模型並切換分支並嘗試創建相同模型之後 - 我正在重做一個教程 - 我得到一個錯誤,指出它已經存在)。我查看了默認創建的.gitignore文件,實際上它不受版本控制。

# Ignore the default SQLite database. 
/db/*.sqlite3 
/db/*.sqlite3-journal 

我覺得這有點煩人,實際上擔心它不在版本控制之下,但我確定這個默認行爲是有充分理由完成的。

爲什麼數據庫不受版本控制?

同樣,如果我這樣做是一個壞主意? (雖然我同意在數據庫完成新的CRUD之後繼續將數據庫提交給git會非常煩人)。

我該怎麼做呢? - 我原以爲能夠切換分支(不是主人)並改變模型並知道當我返回主分支並知道我沒有破壞任何東西(如果我沒有合併當然)。

+1

可能重複[如何將數據庫置於git(版本控制)?](https://stackoverflow.com/questions/846659/how-can-i-put-a-database-under-git-版本控制) – evolutionxbox

+0

@evolutionxbox不,我希望能夠切換分支併爲每個分支擁有不同版本的數據庫。 – Mark

+0

這不是什麼分支,但如果這就是你想要的,我唯一能想到的就是爲每個分支創建一個腳本,用於廢棄和重建數據庫。通過這種方式,您可以控制每個分支中的數據庫版本。 –

回答

0

IMO最好的辦法是爲不同的分支創建單獨的長期運行worktrees:

git clone -b branch1 master-repo project-b1 
git clone -b branch2 master-repo project-b2 

在這些worktrees創建不同的數據庫結構/數據,不切換分支。

+0

我沒有使用Git的問題......我不知道什麼是工作樹是或不是?它與分支有什麼不同? – Mark

+0

工作樹是您在克隆存儲庫時獲得的 - 一個包含文件的目錄樹。您當前的工作流程是使用1個工作樹並在其中切換分支。我的建議是每個分支使用1個工作樹,並停止切換分支;當你需要在另一個分支工作時,你運行'cd'並更新分支。如果你使用新鮮的git,你可以使用[git worktree命令](https://www.kernel.org/pub/software/scm/git/docs/git-worktree.html)。 – phd