将数据库迁移保留在VCS中是一个好主意吗?

时间:2012-04-19 18:59:56

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

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

但是...

进行旧迁移有什么用?我真的没有看到自己恢复到旧版本的db。将它们从VCS中移除并在每台机器上创建一个不必与其他人的migraton队列保持同步的迁移队列会不会更容易?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

我认为你是对的,在保持旧的迁移方面几乎没用,即使它们没有造成伤害我也不喜欢我项目中未使用的代码。

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

我会不时地在一次初始迁移中废弃并重新创建所有迁移,然后再次开始收集新的迁移。

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

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