[解決済み】データベースをgit(バージョン管理)下に置くには?)
質問
ウェブアプリを作っていて、いくつかの大きな変更のためにブランチを作る必要があるのですが、この変更にはデータベーススキーマの変更が必要なので、データベース全体も git の下に置きたいと思います。
どうすればいいのでしょうか。gitリポジトリの下に置いておける特定のフォルダはありますか?どのようにすれば分かりますか?どうすれば、正しいフォルダを置いたと確認できますか?
この変更は後方互換性がないため、失敗が許されないのです。
私の場合、データベースはPostgreSQLです。
編集する
バックアップを取り、データベースの代わりにバックアップファイルをバージョン管理下に置くことを提案した人がいました。正直なところ、それはとても飲み込みにくいことだと思います。
<ストライク もっといい方法があるはずだ。
アップデートする
でも、まだ納得がいかないので、質問を少し変えてみます。
データベース全体をバージョン管理下に置きたいのですが、ダンプではなく実際のデータベースをバージョン管理下に置くには、どのようなデータベースエンジンを使用すればよいでしょうか?
sqliteはgitフレンドリーでしょうか?
あくまで開発環境なので、データベースは好きなものを選べるのですが。
Edit2:
私が本当に欲しいのは、自分の開発履歴を追跡することではなく、"new radical changes" ブランチから "current stable branch" に切り替えて、例えばバグや問題点などを current stable branch で修正できるようにすることなのです。ブランチを切り替えたときに、データベースが自動的に今いるブランチと互換性を持つようにするのです。 実際のデータについてはあまり気にしていません。
解決方法は?
データベースのダンプを取り、代わりにそれをバージョン管理する。こうすれば、フラットなテキストファイルになります。
個人的には、データ・ダンプとスキーマ・ダンプの両方を取っておくことをお勧めします。こうすることで、リビジョンごとにスキーマのどこが変わったかをdiffで簡単に確認することができます。
大きな変更を加える場合は、セカンダリデータベースを用意して、新しいスキーマを変更し、古いデータベースには触れないようにする必要があります。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] mongodb 4 データディレクトリ C:\data_dbdb not found
-
[解決済み] Max CardinalityとMin Cardinalityの違いは何ですか?
-
[解決済み] DB2 ログファイルの制限、SQLCODE。-964
-
[解決済み] 扇形トラップ・狭間トラップ - データベース
-
[解決済み] なぜ私のPerlスクリプトは "out of memory "例外で死んでしまうのですか?
-
[解決済み] なぜOracleはoci.dllを見つけられないのでしょうか?
-
[解決済み] Python 3 - JDBCで接続する
-
[解決済み] postgresql pg_dump の出力はどこに行くのでしょうか?
-
[解決済み】Djangoモデル - 大文字小文字を区別しないクエリ/フィルタリング