回答:
選択する理由 両方でなければなりません。
開発環境は、チェックアウト、オープン、ビルド、実行、デバッグを行うのと同じくらい簡単になるように構成する必要があります(例:絶対パスなし!)。これは、コンパイルディレクティブ、構成クラス+依存性注入、またはASP.NETのperso.configなどのトリックで簡単に実行できます。
自動化されたビルドスクリプトは、特定の本番構成、クリーンアップ、パッケージングなどを処理するために十分にカスタマイズする必要があります。
人々が貢献することが期待されるオープンソースプロジェクトの場合、私は開発者に優しいものを選ぶでしょう。
オープンソースプロジェクトに関する私の最大の嫌悪は、リポジトリがコードをビルドするために必要なすべての依存関係を含むことはめったにありませんが(実際的または法律上の理由で)より重要なのは、必要なバージョンです。(そしてできればどこから入手するか)
目的のプロジェクトをビルドするために、他のいくつかのプロジェクトを取得してコンパイルするのに半日以上かかることがあります。
もちろん、これはWindowsでの開発にのみ関係します。
仕事をやりやすくするために、私はすべて摩擦を下げることを望んでいますが、障害モードも考慮する必要があります。
ソースリポジトリバージョンが常に本番用に構成されている場合、システムを実行する前に開発者が再構成に失敗した結果はどうなりますか?実動に対してコードを実行する開発者。
開発者がプロダクションをランダムに変更する方法に他のハードルがあるかどうかに関係なく、それを促進する障害モードを構築することは危険に思えます。
コミットされたコードに含まれるデフォルト値は常に安全であるべきだと提案します。必要に応じて、プロダクション構成ファイルもソース管理にチェックインします-私はほとんど常にそうします-しかし、「ライブではない」どこかに保管します。