Below is extracted from the section of the official South documentation on Team Workflow,
The second thing to note is that, when you pull in someone else’s model changes complete with their own migration, you’ll need to make a new empty migration that has the changes from both branches of development frozen in (if you’ve used mercurial, this is equivalent to a merge commit).
I don’t see why the need for creating a new empty migration in this case. Shouldn’t the developer just run ./manage.py migrate after pulling in the model changes (and the corresponding migrations) from others? What am I missing here?
I believe what that means is that if both branches have changes to the same model, then its better to merge the code and re-create a single migration script for those changes. This is because if branch1 has a 0006 migration script and branch2 has another 0006 migration script (you know how south names them sequentially…) then you can’t correctly auto merge them since they are actually different files.
Hence you’d need to merge code changes and then re-create a migration script for the merged branch.