2015-05-12 26 views
12

正如標題所說......我不確定Django migrations應該在源代碼控制中生存。Django遷移應該在源代碼控制中生存嗎?

爲:

  • 如果他們因意外而從我的本地計算機中刪除,這將導致我發出下一次我要運行遷移,對吧?所以它對我來說是有用的。

反對:

  • 離散事件,第一次應該不需要運行它們設置項目,他們可以直接從模型文件的工作。
  • 他們似乎像機器特定的cruft。
  • 他們可能會透露我不想要的數據庫的東西嗎?

回答

17

是的,絕對是!

docs

每個應用程序的遷移文件生活在「遷移」目錄中的應用程序內,並且被設計成承諾,和分佈的,它的代碼庫的一部分。你應該在你的開發機器上製作一次,然後在同事的機器,登臺機器以及最終的生產機器上運行相同的遷移。

一個很大的問題是,你在生產中部署它們之前遷移應始終測試。你不應該在生產上創建遷移,只應用它們。

您還希望將源控件中模型的狀態與數據庫的狀態同步。如果有人拉你的分支,必須找到一個bug,然後回到源代碼控制的歷史記錄中,他需要遷移文件來改變數據庫的狀態以匹配那個時間點。如果他必須創建他自己的遷移文件,他們將不包括中間狀態,並且他遇到了一個問題,他的模型與數據庫不同步。

+3

我正在與這個相同的問題摔跤。如果兩個開發人員分離遷移歷史記錄,合併這些衝突可能會變得混亂。沒有遷移,這些衝突就不會發生。爲了knbk的第一點,只需在分段環境中創建並測試遷移即可。對於knbk的第二點,這種擔憂是真實的,但處理移民衝突似乎更容易。 – Nico