2012-03-14 8 views
1

私はコードイグナイターのアプリケーションを友人と一緒に開発しています。私たちはどちらもマシン上で異なるデータベースログインを持っているため、異なる "config/database.php"ファイルがあります。Gitを開発者間でどのように使うことができますか?

Gitに私たちの両方に異なるデータベース設定があることを教えてもらえますか?現時点では、 "config/database.php"が私たちのために異なるので、私たちが引き出すたびにマージ競合が発生しています。

+0

どのようにセッションを維持していますか?アプリケーションはSOAにアクセスしますか?または、各クライアントはそれ自身のdb接続を保持していますか?その場合は、サービスの共通ログインを使用して、ユーザーログインインターフェイスと簡単な認証メカニズムを実装できます。 –

答えて

6

私は通常/application/config/database.phpというファイルの名前を/application/config/database.default.php(バージョン)とad d .gitignoreファイルへの元のパス。次に、各開発者は、デフォルトの(バージョン管理されていないファイル)を元のパスにコピーし、ローカル設定ごとに編集します。

これはサーバーセットアッププロセスの特別なステップになりますが、あなたが言いたい悲しみを節約します。

1

つのオプションは次のとおりです。

  1. はもうバージョン管理にはない、このファイルを実行します(私はあなたの研究にはgitコマンドを残す)
  2. .gitignoreファイルを使用し

としては、「あなたの結果古い場所にファイルがありますが、もう一度別のファイルに干渉しません。

1

通常、これらの問題を避けるために、データベース構成ファイルを.gitignoreファイルに置きます。とにかく、これらの設定ファイルを自分のユーザ/パスワードとともにgitに入れないことをお勧めします。
config/database.ymlにコピーしてローカルマシンに編集するための基礎として、config/database.yml.templateファイル(私たちはレールを使用しています)を頻繁に保管します。 database.ymlファイル名は、.gitignoreファイル(バージョン管理下で共有されます)に格納されます。

gitignoreの基本はhereです。
避けるべき落とし穴を含む追加情報:Ignore files that have already been committed to a Git repository

1

環境変数に基づいて設定を選択する1つのファイルがあります。その変数をサーバーの設定で設定します。そうでない場合は、同じ問題が再び発生し、あなたがverisonないだろう、

<?php 

if (getenv('WHOS_CONFIG') == 'mine') { … } else { … } 

やサーバ設定で(:)
例えばApache用:また

<VirtualHost *> 
SetEnv WHOS_CONFIG mine 
… 

、バージョン管理されていないdatabase.local.phpファイルを含んでいる共通database.php設定ファイルを持っています。後者は必要な変数をオーバーライドします。