0

gitのブランチをチェックして、実行した3つの移行を行う機能の開発を実験しました。データベースにごく少量のデータを保存することは重要ではありません。ブランチをマスターにマージするときにこれを処理するにはどうすればよいですか?マージする前に移行をロールバックし、マージ後に再度実行する必要がありますか(1つのSOの回答で示唆されているように)、そのままにしてすべてをブランチにコミットし、ロールバックせずにマージしますか。別のSOの回答は、データベースをgitignoreファイルから削除することを提案しましたが、それがデータの保存が重要である可能性がある状況でのみ必要かどうかは明確ではありませんでした。

# Ignore the default SQLite database.
/db/*.sqlite3
4

1 に答える 1

3

*.sqlite3git で開発ファイルを追跡しないでください。

あなたがすべき

  1. ブランチにマージmasterする
  2. すべてが順調であることを確認してください
  3. チェックアウトmaster
  4. ブランチをマージして戻しますmaster
  5. 開発を続ける

マージにより、ブランチから移行が取り込まれます。マージの前にロールバックし、マージを実行してから移行することもできますが、その必要はありません。最終的に得られるスキーマは同じになります。


ロールバック/移行が必要な状況では、masterとブランチ間の移行が何らかの形で競合する可能性があります。これは、「すべてが順調であることを確認する」場合に、上記のステップ #2 で修正するものです。

原則として、完全に空のデータベースを取得して実行rake db:migrateし、最終的には何も失敗することなく最新のデータベース構造になるはずです。これが、上記のステップ 2 が重要である理由です。これは、互換性を損なう/競合する移行を にマージしないようにするためですmaster

開発中にデータを失う危険がある状況に関しては、これがフィクスチャの目的です。Rails のシード機能、またはfactory_girlのような gem を使用できます。

于 2013-02-25T00:07:10.657 に答える