【问题标题】:Django South migration conflict while working in a team在团队中工作时 Django South 迁移冲突
【发布时间】:2012-08-07 08:05:00
【问题描述】:

我有一个关于如何在团队中使用 Django-South 的简短问题。

如果两个人同时对同一个文件的更改创建迁移文件会怎样?

例如,A 和 B 正在开发同一个 Django 应用程序。他们在不同的分支工作,并且都在迁移 005。现在,A 和 B 都修改了 apple/models.py 并使用 startmigration 创建了迁移文件。他们都在迁移006,但迁移文件006完全不同。我猜当他们合并他们的分支时,South可能会出现一些错误。

有什么办法可以解决这个冲突吗?还是 South 足够聪明,可以自己解决?

【问题讨论】:

    标签: django git conflict django-south


    【解决方案1】:

    South 的documentation 谈到这个问题:

    团队和迁移的问题发生在多人时 在同一时间段内进行迁移,并且他们都已提交 没有另一个被应用。这相当于两个人 同时在 VCS 中编辑同一个文件,和 VCS 一样,South 有解决问题的方法。

    如果发生这种情况,首先要注意的是 South 会检测到 问题,并发出这样的消息:

    Inconsistent migration history
    The following options are available:
        --merge: will just attempt the migration ignoring any potential dependency
            conflicts.
    

    如果您使用 --merge 重新运行迁移,South 将简单地应用 无序丢失的迁移。这通常有效,因为 团队正在研究不同的模型;如果没有,您需要 查看实际的迁移更改并手动解决它们,如 他们很可能会发生冲突。

    要注意的第二件事是,当您拉入别人的 模型更改通过自己的迁移完成,您需要进行 具有来自两个分支的更改的新空迁移 开发冻结(如果您使用过 mercurial,这相当于 合并提交)。为此,只需运行:

    ./manage.py schemamigration --empty appname merge_models
    

    (注意merge_models 只是一个迁移名称;将其更改为 随心所欲)

    这里的重要信息是 South 不能替代团队 协调 - 事实上,大多数功能纯粹是为了警告 您尚未协调,并且提供的简单合并是 只有在简单的情况下。确保您的团队知道谁在工作 关于什么,所以他们不会编写影响相同部分的迁移 同时数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-12
      • 2014-01-12
      • 2012-08-06
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      相关资源
      最近更新 更多