誰か(私!)がパブリックデータベース接続文字列を含むファイルを誤ってGoogleCodeにコミットするのを防ぐテクニックを知っている人はいますか?(DBスキーマを更新するために)ローカルマシンからデータベースでいくつかの単体テストを実行する必要がありますが、パブリックDBを指すように接続を変更したことを忘れて、コードをチェックインすることを心配しています。 SVN。
もちろん、それは最初に起こる可能性は低いですが、おそらく5〜10回後に起こります。
これを処理する最も簡単な方法は何ですか?
誰か(私!)がパブリックデータベース接続文字列を含むファイルを誤ってGoogleCodeにコミットするのを防ぐテクニックを知っている人はいますか?(DBスキーマを更新するために)ローカルマシンからデータベースでいくつかの単体テストを実行する必要がありますが、パブリックDBを指すように接続を変更したことを忘れて、コードをチェックインすることを心配しています。 SVN。
もちろん、それは最初に起こる可能性は低いですが、おそらく5〜10回後に起こります。
これを処理する最も簡単な方法は何ですか?
私は通常、パスワードを含まないmyapp.config.defaultのようなデフォルトの構成ファイルを作成し、実際の構成ファイルの代わりにそのファイルをリポジトリに追加します。
これが私がWebアプリに使用するソリューションです。まず、svnのWeb.configファイルには、変更される可能性のある重要な情報が含まれているため、無視したくありません。したがって、接続文字列をWeb.Configから引き出し、WebCS.configというファイルに配置してから、SVN .ignoreディレクティブを使用して、その1つのファイルだけをチェックインしないようにします。
これを行うには、Web.Configに次の「include」行を配置します。
<connectionStrings configSource="WebCS.config"/>
次に、WebCS.configファイルを作成し、次のように入力します。
<connectionStrings>
<add name="ConnString"
connectionString="Data Source=YourServer;Initial Catalog=YourDB;etc..
providerName="System.Data.SqlClient"/>
</connectionStrings>
これにより、Webサイトの更新も簡単になります。WebCS.configファイル以外のすべてをアップロードするだけです(サイトを「公開」した後にファイルを削除するバッチファイルがあります)。これにより、すべてのWeb.Configファイル設定が接続文字列をいじることなく実行され、リポジトリに重要なファイルが欠落しておらず、接続文字列が公開されないことが保証されます。 。
構成データをローカル構成ファイル(ホームディレクトリ内のファイル)で上書きできるようにします。アプリケーションロジックに、構成ファイルを見つけるための場所の階層を含めます。
Emil Hの2 番目の提案に 1 つ追加します。正しい構成ファイルをsvn:ignore -property 経由で無視する必要があります。
たとえば、構成ファイルは次の場所にある必要があります。
./config/app.conf
次に、Subversion のこのファイルを無視する必要があります。
svn propset svn:ignore "app.conf" ./conf
app.conf を app.conf.example にコピーし、このファイルを subversion に追加します: cp app.conf app.conf.example svn add app.conf.example
これで、Subversion は app.conf ファイルをリポジトリに追加しようとしなくなりました (また、同僚が誤ってこのファイルをコミットすることもありません!)