1

私は自分のマシンにMAMPをセットアップして、いくつかのWebサイトを開発しました。プロジェクトを整理して分離したかったので、それぞれに仮想ホストをセットアップしました。これは機能しています。プロジェクトごとに、などのディレクトリにWebファイル(javascripts、css、html、php)があり/Users/Alex/Dropbox/code/projectX/ます。私のMAMPディレクトリは、それ以外はそのままの状態と同じです。すべてのMysqlのものはにあり/Applications/MAMP/dbます。\projectX\はすでにgitリポジトリですが、私のdbファイルはバージョン管理されていません。

質問:各Webプロジェクトに関連付けられているデータベースをバージョン管理するにはどうすればよいですか?私の頭の中には3つのアプローチがあり、最初の2つをどのように実装するかがわかりません。私は最初のものを好みます。なぜなら、それはより単純に見え、仮想ホストスキームにうまく適合しているからです。

a)projectXのデータベースディレクトリを\projectX\フォルダに移動してから、それだけに移動しますgit add。ただし、このデータベースがここにあり、そのデータベースがそこにあることをMySQLに伝える方法がわかりません。

Applications\MAMP\db\mysql\projectXdbb)どういうわけか、それが内部にあるかのようにバージョン管理する必要があることをgitに伝えます\projectX\

c)気にしないで、データベース用に別のリポジトリを用意してください。

4

1 に答える 1

2

最初に、私はこれと彼が投稿したリンクを読みます-単にそれらがよく読まれているからです。

要するに(そしてこれは私が質問を誤解しているかもしれないところです)、私は実際のデータベースをバージョン管理に保存することがこれまでで最も賢明であるとは思いません。むしろ、データベースを制御/変更/設定するデータベーススクリプトを保存するシステムを決定する必要があります。したがって、これらのスクリプトは、コードのファイル構造内のどこにでも絶対に保存できます。

このアイデアが機能する場合は、実際のデータベースの場所を変更する必要はなく、gitは実際のデータベースがどこにあるかを気にする必要もありません。

私が提案している例は、次のようなファイルを作成することです。

ALTER TABLE Customer
  ADD ShoeSize int NOT NULL DEFAULT 0
GO

INSERT INTO OrderStates 
   (OrderStateID, OrderState)
   VALUES(3, 'Cancelled')
GO

そして、それを/Users/Alex/Dropbox/code/projectX/db-scripts何かと呼ばれるディレクトリに保存します。そのディレクトリ内には、いつでもDBを管理/複製するために必要なすべてのスクリプトが含まれます。

編集:

ソフトウェアがすべての情報をDB自体に保持している場合は、おそらく実行mysqldump(または同等)して、そのスクリプトをコードに保存します。

テキストバージョンを保存すると、次の2つのことが可能になります。

a)バイナリファイルを保存するよりも効果的/効率的です(RCS / gitを正しく理解している場合)

b)gitは、ファイルに対してdiffおよびgrep-searchesを実行できます。(それを行う別のツールがすでにあるかどうかは問題ではないかもしれません)

于 2012-05-01T02:46:19.413 に答える