【问题标题】:Ruby On Rails - SQLite3 database and Version controlRuby On Rails - SQLite3 数据库和版本控制
【发布时间】:2018-06-08 09:22:25
【问题描述】:

首先我只讨论我的开发数据库(development.sqlite3)。

我最近刚刚意识到默认情况下数据库不受版本控制(在创建模型并切换分支并尝试创建相同的模型之后 - 我正在重做教程 - 我收到一个错误,指出它已经存在) .我检查了默认创建的 .gitignore 文件,确实它不受版本控制。

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

我觉得这有点烦人,实际上担心它不受版本控制,但我确信这种默认行为是有充分理由的。

为什么数据库不受版本控制?

同样,如果我这样做是个坏主意吗? (尽管我同意在完成对数据库的新 CRUD 后继续将数据库提交到 git 会非常烦人)。

我该怎么做呢? - 我会认为能够切换分支(不是主分支)并更改模型并知道当我返回主分支并知道我没有破坏任何东西时(如果我没有当然不会合并)。

【问题讨论】:

  • @evolutionxbox 不,我希望能够切换分支并为每个分支提供不同版本的数据库。
  • 这不是分支的用途,但如果这是你想要的,我唯一能想到的就是为每个分支创建一个脚本来废弃和重建你的数据库。这样你就可以控制每个分支的数据库版本。
  • 这不是分支的用途是什么意思?如果数据库受到版本控制,那么每个分支实际上都有不同的版本(就像任何其他受版本控制的文件一样)?好的,我可以说你有一个文件,其中根据分支应用了增量文件,我可以更好地表达这一点......
  • 检查this answer。基本上,有两种方法的链接:github.com/cannadayr/git-sqlitegithub.com/DataWraith/gitfilters(请参阅那里的 sqlite 过滤器)

标签: ruby-on-rails git sqlite


【解决方案1】:

IMO 最好的方法是为不同的分支创建单独的长期运行的工作树:

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

在这些工作树中创建不同的数据库结构/数据,不要切换分支。

【讨论】:

  • 我对使用 git 没有任何问题...我不知道工作树是什么或做什么?和分支有什么不同?
  • 克隆存储库时会得到一个工作树——一个充满文件的目录树。您当前的工作流程是使用 1 个工作树并在其中切换分支。我的建议是每个分支使用 1 个工作树并完全停止切换分支;当您需要在另一个分支中工作时,您可以运行 cd 并更新该分支。如果你使用新鲜的 git,你可以使用 git worktree command
  • 这行不通,请参阅stackoverflow.com/q/39665570/5506988
  • 我没有发现任何问题。我推荐了git worktree 和两个不同的工作树,我从不推荐检查同一个分支。正好相反,我建议检查不同的分支。
猜你喜欢
  • 2010-12-14
  • 2015-07-16
  • 2013-12-11
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多