【问题标题】:How am I supposed to manage db revisions alongside codebase revisions?我应该如何管理数据库修订以及代码库修订?
【发布时间】:2015-07-06 10:21:25
【问题描述】:

我们有一个带有 PostgreSQL 数据库的 Rails 应用程序。我们使用git 进行版本控制。

我们只是该项目的两个开发人员,所以我们都必须做一些事情,而当出现紧急情况时,我们往往不得不放弃一切来解决它们。

我们有一个主分支(称为staging 只是很难吗??? p>

当我处理需要更改数据库的功能时,我自然必须创建更改架构的迁移。假设我正在处理feature-emoji,并创建了一个迁移20150706101741_add_emoji_to_users.rb。我运行rake db:migrate 继续我的工作。

后来,我得知需要解决一些错误。我切换到staging 开始工作;但是,现在我的应用程序将出现异常,因为 db 架构与应用程序所期望的不匹配。所以git checkout staging之前,我必须记得做rake db:rollback。然后当我切换回feature-emoji 时,我必须再次运行rake db:migrate

当只处理两个分支时,整个流程还不错,但是当 git rebases 和 git merges 发生时,它就变得复杂了。

有没有更好的方法来并行处理代码和数据库的版本控制?还是我注定每次要更改分支时都必须运行烦人的rake 任务?

【问题讨论】:

    标签: database git version-control rake


    【解决方案1】:

    对此没有简单的答案。您也许可以设置一个类似 git 钩子的东西来检查对 schema.rb 的更改,如果存在任何更改,则检查失败;但是在这样的设置中有很多边缘情况需要检查。

    归根结底,人类开发人员有责任恢复其环境中未跟踪的部分——例如。数据库——在切换分支之前处于干净状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-15
      • 2013-02-07
      • 2010-10-19
      • 2010-09-07
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多