2012-03-09 6 views
26

私はプロジェクトを継承しており、gitを使用しています。私たちはいくつかの環境(dev、test、prod)を持っています。以前のチームは基本的に、同じアカウント、パスワード、sidなどを使って各インスタンスごとにすべてを再作成しました。唯一変更されたのは/ etc/hostsのホスト名マッピングでした。そのため、別のデータベースサーバーに接続します。ブランチング:リリース/開発用の異なる設定ファイル

これは、開発者がメイン開発サーバーと同じデータベースインスタンスを使用して実験を実行できるようにスキーマをコピーできないため、問題が発生します。私は基本的に別のホストに新しいデータベースインスタンスを作成し、その新しいサーバを指すように/ etc/hostsを変更する必要があります。

これは現在作業中の設定ですが、私は各インスタンスごとに異なる設定ファイルを維持する方法を見つけようとしています。すなわち、異なるバージョンのapplicationConfig.xmlがブランチによって異なります。私は、レポにデータベース認証情報を保持することは素晴らしい考えではないと主張することができると推測していますが、それをただ無視するだけです。

別のバージョンのファイルを使用する可能性がある別の状況では、デバッグする可能性があります。私はJavaScriptのロガーフレームワークを使用していて、本番リリースでは出荷したくないデバッグコードを追加しています。開発/テスト時にロガーの内容を追加する必要はなく、リリース前に再び削除する必要はありません。誰かがそれをするのを忘れるかもしれない。

異なるブランチのファイルの異なる「バージョン」を扱う適切な方法は何ですか?マスター上の最新コードと同期しているブランチを持つ方法がいくつかありますが、いくつかのconfig/codeファイルが変更されていますか?私はそれが自動的に同期を維持するとは思わないが、私は完全に(?)を無視していない間に、設定ファイル(またはその一部)をマージすることができないようにしたいと思います。たとえば、行6,7(dbユーザー名とパスワード)をマージしないでください。他の変更をファイルにマージします。

答えて

27

gitの属性を読み上げてください。 Check out the section at the bottom of this page

プロジェクト内の分岐が発散したり の専門ですが、あなたはそれから後ろの変更をマージすることができるようにしたい、 とあなたが特定のファイルを無視したいしている場合に便利です。データベース設定 が2つのブランチで異なるdatabase.xmlというファイルを持っており、 ファイルを というデータベースを台無しにしないで他のブランチでマージしたいとします。

+0

おかげで異なる設定と異なる資格情報を持つようになります!これは、法案に適合しているようです。 – robertrv

+2

そのリンクは死んでいます。 – ashack

+4

FYIそれは生きている(再び)。 – LeonardChallis

2

すでに述べたように、コード内に設定を保存することはお勧めできません。特に、開発者は運用データベースの資格情報を知るべきではありません。

各サーバーでは、事前定義された環境変数が必要な資格情報を持つ構成ファイルを指しています。ここでJavaを使用しているので、これはdatabase.propertiesのようなファイルであり、このファイルは決してバージョン管理システム内にはありません。

これによっても、各サーバ

+1

うん。私はあなたにレポのデータベース情報を持たないことに同意します(それは私たちの呼び出しではなく、私たちはプロジェクトフォームを別の会社に継承しました)。しかしこの場合、私たちは3人のチームであり、私たちはすべて開発者とサーバーのセットアップを行います。したがって、開発チームからデータベースアカウントを保持するのはかなり難しいです。configsの統合と修正に時間を費やしたいと思いますが、クライアントの価値を説得するのは難しいです。 – robertrv

関連する問題