2017-12-27 189 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