2012-08-07 40 views
12

我有一個簡短的問題,關於如何使用Django南在一個團隊工作。Django南移民衝突,而在一個團隊工作

如果兩個人同時創建對相同文件的更改的遷移文件,會發生什麼情況?

例如,A和B正在使用相同的Django應用程序。他們在不同的分支工作,並且都在遷移005.現在,A和B都修改了apple/models.py並使用startmigration創建了遷移文件。他們都在遷移006,但有完全不同的遷移文件006.我想他們合併分支時,南方可能會有一些錯誤。

是否有解決此衝突的解決方法?還是南方有足夠的智慧來解決這個問題?

回答

19

南方的這個問題documentation會談:

當不止一個人 人在同一時隙中遷移時與團隊和遷移的問題,他們都可以提交, 沒有其他已應用。這類似於兩個人 同時編輯VCS中的同一文件,並且與VCS一樣,南 有解決問題的方法。

如果發生這種情況,首先要注意的事情是,南方將檢測 問題,併發出這樣的信息:

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

如果重新運行與--merge遷移,南會簡單地套用 失序失蹤的遷移。這通常是有效的,因爲 團隊正在單獨的模型上工作;如果沒有,則需要 查看實際的遷移更改並手動解決它們,因爲 可能它們會發生衝突。

要注意的第二件事情是,當你在別人的完成自己的移民 模式的轉變拉,你需要做的是具有從凍結 發展的兩個分支的變化 新的空遷移(如果你已經使用了mercurial,這相當於合併提交 )。要做到這一點,只需運行:

./manage.py schemamigration --empty appname merge_models 

(注意merge_models僅僅是一個移民的名字,更改爲 不管你喜歡)

這裏最重要的信息是,南方球隊 協調無可替代 - 事實上,大多數功能純粹是爲了警告你沒有協調,並且僅提供簡單的合併 只是爲了方便的情況。確保你的團隊知道誰在工作 ,所以他們不寫同時影響DB的相同部分的遷移。

+1

這表明閱讀文檔是很好的;)+1 – Tadeck 2012-08-07 13:07:59