Django南部移民冲突在团队中工作

Jun*_*wak 12 git django conflict django-south

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

如果两个人同时在对同一文件的更改中创建迁移文件会发生什么?

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

有没有解决此冲突的解决方法?或南方足够智能自己解决它?

ver*_*nzt 19

South的文档讨论了这个问题:

团队和迁移的问题发生在多个人在同一时间段内进行迁移时,如果没有应用其他人,他们都会被提交.这类似于两个人同时在VCS中编辑同一个文件,并且像VCS一样,South有解决问题的方法.

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

Inconsistent migration history
The following options are available:
    --merge: will just attempt the migration ignoring any potential dependency
        conflicts.
Run Code Online (Sandbox Code Playgroud)

如果您重新运行迁移--merge,South将只应用无序迁移的迁移.这通常有效,因为团队正在研究不同的模型; 如果没有,你需要查看实际的迁移变化并手动解决它们,因为它们可能会发生冲突.

需要注意的第二件事是,当你通过他们自己的迁移引入其他人的模型更改时,你需要进行一个新的空迁移,其中包含两个开发分支的更改被冻结(如果你使用了mercurial) ,这相当于合并提交).为此,只需运行:

./manage.py schemamigration --empty appname merge_models
Run Code Online (Sandbox Code Playgroud)

(注意,这merge_models只是一个迁移名称;根据您的喜好更改它)

这里的重要信息是,南方不能代替团队协调 - 事实上,大多数功能都纯粹是为了警告你没有协调,而简单的合并仅仅是为了简单的案例.确保您的团队知道谁在做什么,因此他们不会同时编写影响数据库相同部分的迁移.