South のドキュメントでは、この問題について次のように説明されています。
チームと移行に関する問題は、複数の人が同じタイムスロットで移行を行い、他の人が適用されずに両方がコミットされた場合に発生します。これは、2 人の人が同時に 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 は順不同で欠落していた移行を単純に適用します。チームは別々のモデルで作業しているため、これは通常うまくいきます。そうでない場合は、競合する可能性があるため、実際の移行の変更を確認して手動で解決する必要があります。
2 番目に注意すべきことは、他の誰かのモデルの変更を自分の移行で完全に取り込む場合、開発の両方のブランチからの変更が凍結された新しい空の移行を作成する必要があることです (mercurial を使用した場合)。 、これはマージコミットと同等です)。これを行うには、次のコマンドを実行するだけです:
./manage.py schemamigration --empty appname merge_models
(これmerge_models
は単なる移行名であることに注意してください。好きなように変更してください)
ここでの重要なメッセージは、South はチームの調整に代わるものではないということです。実際、ほとんどの機能は、調整が行われていないことを警告するためのものであり、提供されている単純なマージは簡単な場合にのみ使用されます。チームが誰が何に取り組んでいるのかを把握して、DB の同じ部分に同時に影響する移行を作成しないようにしてください。