Ruby On Rails - SQLite3数据库和版本控制
问题描述:
首先,我只讨论我的开发数据库(development.sqlite3)。Ruby On Rails - SQLite3数据库和版本控制
我最近刚刚意识到,默认情况下,数据库不受版本控制(在创建模型并切换分支并尝试创建相同模型之后 - 我正在重做一个教程 - 我得到一个错误,指出它已经存在)。我查看了默认创建的.gitignore文件,实际上它不受版本控制。
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal
我觉得这有点烦人,实际上担心它不在版本控制之下,但我确定这个默认行为是有充分理由完成的。
为什么数据库不受版本控制?
同样,如果我这样做是一个坏主意? (虽然我同意在数据库完成新的CRUD之后继续将数据库提交给git会非常烦人)。
我该怎么做呢? - 我原以为能够切换分支(不是主人)并改变模型并知道当我返回主分支并知道我没有破坏任何东西(如果我没有合并当然)。
答
IMO最好的办法是为不同的分支创建单独的长期运行worktrees:
git clone -b branch1 master-repo project-b1
git clone -b branch2 master-repo project-b2
在这些worktrees创建不同的数据库结构/数据,不切换分支。
可能重复[如何将数据库置于git(版本控制)?](https://stackoverflow.com/questions/846659/how-can-i-put-a-database-under-git-版本控制) – evolutionxbox
@evolutionxbox不,我希望能够切换分支并为每个分支拥有不同版本的数据库。 – Mark
这不是什么分支,但如果这就是你想要的,我唯一能想到的就是为每个分支创建一个脚本,用于废弃和重建数据库。通过这种方式,您可以控制每个分支中的数据库版本。 –