【发布时间】:2012-05-01 08:58:03
【问题描述】:
传统观点似乎是数据库迁移应该保存在 VCS 中 - 这样就可以记录数据库经历的所有更改。
但是……
旧迁移有什么用?我真的不认为自己会恢复到旧版本的 db。将它们排除在 VCS 之外并在每台机器上创建一个不必与其他所有人的迁移队列保持同步的迁移队列不是更容易吗?
【问题讨论】:
标签: database django database-design data-migration django-south
传统观点似乎是数据库迁移应该保存在 VCS 中 - 这样就可以记录数据库经历的所有更改。
但是……
旧迁移有什么用?我真的不认为自己会恢复到旧版本的 db。将它们排除在 VCS 之外并在每台机器上创建一个不必与其他所有人的迁移队列保持同步的迁移队列不是更容易吗?
【问题讨论】:
标签: database django database-design data-migration django-south
我认为您是对的
虽然在开发过程中使用像 south 这样的迁移系统有很大帮助,但您确实可能不需要关于合并功能/更改的旧模式迁移(如果您仍然在VCS)。
我有时会在一个初始迁移中进行清理并重新创建所有迁移,然后重新开始收集新的迁移。
将迁移保留在 VCS 之外并不是一个好主意,如果它不会引入问题,它肯定会减慢开发速度。
编辑: 由于清理过程需要团队了解这种重组(并清除迁移历史记录表),因此当您无法轻松接触到所有开发人员/用户时,不建议这样做。
【讨论】:
如果您认为保留旧的迁移是浪费,那么您就是不了解迁移。迁移允许您回滚更改。您可能无法想象这样做,但它可能是必要的。完整的迁移历史记录允许协作团队保持同步,而不管他们开始时可能拥有的版本。
垃圾和重新开始是您对 South 能做的最糟糕的事情之一。除非您明确告诉所有人进入并清除 south_migrationhistory 表并删除所有现有迁移并创建新的 init 迁移,否则您完全搞砸了其他开发人员。
简而言之。将迁移留在 VCS 中,这是它们所属的地方,这样任何人从任何时候进入项目都可以快速将他们的数据库迁移到当前版本。不要清除它们,它们不会伤害任何东西,这样做会给其他合作者带来麻烦。
【讨论】: