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

时间:2012-08-07 08:05:01

标签: django git conflict django-south

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

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

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

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

1 个答案:

答案 0 :(得分:18)

South的documentation谈到了这个问题:

  

团队和迁移的问题发生在不止一个人的情况下   在相同的时间段内进行迁移,它们都会被提交   没有其他的应用。这类似于两个人   同时在VCS中编辑同一个文件,就像南方的VCS一样   有办法解决问题。

     

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

     
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只是一个迁移名称;请将其更改为   无论你喜欢什么)

     

这里的重要信息是南方不能代替球队   协调 - 事实上,大多数功能都纯粹是为了警告   你没有协调,你提供简单的合并   只有那里容易的情况。确保您的团队知道谁在工作   什么,所以他们不会写影响相同部分的迁移   同时DB。