【问题标题】:Is it a good idea to keep database migration inside VCS?将数据库迁移保留在 VCS 中是个好主意吗?
【发布时间】:2012-05-01 08:58:03
【问题描述】:

传统观点似乎是数据库迁移应该保存在 VCS 中 - 这样就可以记录数据库经历的所有更改。

但是……

旧迁移有什么用?我真的不认为自己会恢复到旧版本的 db。将它们排除在 VCS 之外并在每台机器上创建一个不必与其他所有人的迁移队列保持同步的迁移队列不是更容易吗?

【问题讨论】:

    标签: database django database-design data-migration django-south


    【解决方案1】:

    我认为您是对的

    虽然在开发过程中使用像 south 这样的迁移系统有很大帮助,但您确实可能不需要关于合并功能/更改的旧模式迁移(如果您仍然在VCS)。

    我有时会在一个初始迁移中进行清理并重新创建所有迁移,然后重新开始收集新的迁移。

    将迁移保留在 VCS 之外并不是一个好主意,如果它不会引入问题,它肯定会减慢开发速度。

    编辑: 由于清理过程需要团队了解这种重组(并清除迁移历史记录表),因此当您无法轻松接触到所有开发人员/用户时,不建议这样做。

    【讨论】:

      【解决方案2】:

      如果您认为保留旧的迁移是浪费,那么您就是不了解迁移。迁移允许您回滚更改。您可能无法想象这样做,但它可能是必要的。完整的迁移历史记录允许协作团队保持同步,而不管他们开始时可能拥有的版本。

      垃圾和重新开始是您对 South 能做的最糟糕的事情之一。除非您明确告诉所有人进入并清除 south_migrationhistory 表并删除所有现有迁移并创建新的 init 迁移,否则您完全搞砸了其他开发人员。

      简而言之。将迁移留在 VCS 中,这是它们所属的地方,这样任何人从任何时候进入项目都可以快速将他们的数据库迁移到当前版本。不要清除它们,它们不会伤害任何东西,这样做会给其他合作者带来麻烦。

      【讨论】:

      • 在小团队甚至单程序员团队中工作怎么样。你会说迁移历史同样重要吗?
      • 是的,因为您将来可能有合作者,这是一个好习惯……而且他们又不会伤害任何东西,为什么要炸毁他们呢?如果出现问题,它仍然可以让您回滚数据库以进行部署。
      • 您使用 VCS,但对于一个小团队来说,您当然不需要 VCS,对吧?您是否定期导出和重新创建您的 GIT/SVN 存储库?
      • 对于您的数据库架构,迁移有点像 VCS。它们代表版本之间的差异,就像提交代表变更集一样。你不清理你的修订历史(我希望如此),那你为什么要清理你的迁移历史呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2011-05-14
      相关资源
      最近更新 更多