2017-12-27 14 views
0

私は開発データベース(development.sqlite3)について議論しています。Ruby On Rails - SQLite3データベースとバージョン管理

私は最近、デフォルトでデータベースがバージョン管理下にないことを認識しました(モデルを作成してブランチを切り替えて同じモデルを作成した後、チュートリアルをやり直していました) )。デフォルトで作成された.gitignoreファイルを確認しましたが、バージョン管理下にはありませんでした。

# Ignore the default SQLite database. 
/db/*.sqlite3 
/db/*.sqlite3-journal 

私はそれはしかし、私はこのデフォルトの動作は、正当な理由で行われていると確信しているバージョン管理下にないということ、これはやや迷惑と実際に心配を見つけます。

なぜデータベースはバージョン管理されていませんか?

同様に私がそうしたのは悪い考えですか? (私はそれに同意しますが、データベースへの新しいCRUDが行われた後にデータベースをコミットすることは大変迷惑になります)。

どうすればいいですか? - 私は、ブランチ(マスターではない)を切り替えてモデルを変更し、マスターブランチに戻って何も壊れていないことを知っていることを知っていればいいと思っていました。もちろん併合)。

+1

[データベースをgit(バージョン管理)にするにはどうすればいいですか?](https://stackoverflow.com/questions/846659/how-can-i-put-a-database-under-git-バージョン管理) – evolutionxbox

+0

@evolutionxboxいいえ、私はブランチを切り替えることができ、ブランチごとに異なるバージョンのデータベースを持っていたいと思います。 – Mark

+0

これはブランチのためのものではありませんが、それがあなたが望むものなら、私が考えることができるのは、データベースをスクラップして再構築する各ブランチ用のスクリプトを作成することだけです。この方法で、すべてのブランチでデータベースのバージョンを制御できます。 –

答えて

0

最良の方法は、IMO異なるブランチに対して個別の長時間実行worktreesを作成することです:

git clone -b branch1 master-repo project-b1 
git clone -b branch2 master-repo project-b2 

は、これらのworktreesの異なるDB構造/データを作成し、枝を切り替えないでください。

+0

私はgitの使用に問題はありません...私は働いているツリーが何であるか、または何が分かりませんか?そしてそれは枝とどう違うのですか? – Mark

+0

作業ツリーは、リポジトリをクローンするときに得られるもので、ファイルがいっぱいのディレクトリツリーです。現在のワークフローでは、1つのワークツリーを使用し、その中のブランチを切り替えます。私の推奨は、ブランチごとに1つのワークツリーを使用し、ブランチの切り替えを一切停止することです。別のブランチで作業する必要があるときは、 'cd'を実行してブランチを更新します。新鮮なgitを使用する場合は、[git worktree command](https://www.kernel.org/pub/software/scm/git/docs/git-worktree.html)を使用してください。 – phd

関連する問題