web.config
さまざまなオフィスに複数の開発者チームがあり、プロジェクトとapp.config
ファイルの多数の構成設定にさまざまな値が必要です。
これらの構成ファイルは、賢明なデフォルト値のセットでチェックインしたままにしておきたいので、トランク/マスター ブランチをチェックアウトすることで、構成ファイルを探し回らなくても何かが機能します。
歴史的に、私たちは Subversion、特に TortoiseSVN を使用してきました。これにより、ローカルの変更を管理する簡単な方法が提供されました。これらのファイルを TortoiseSVN の自動変更リストに追加するだけですignore-on-commit
。これにより、これらのファイルの偶発的なチェックインを防ぐことができます。これは、チェックインに含めるためにそれらを具体的に選択する必要があるためです (ローカル構成のノイズではなく、重要な変更をチェックインしていることを確認できます)。このアプローチの主な欠点は、構成ファイルが常に「変更された」ように見えるため、ローカルの変更があるかどうかを一目で知ることができないことです。
Git への切り替えを検討しており、最適なアプローチを見つけようとしています。
まず、他の StackOverflow の回答に既にあるもの:
オプション 1: xxx.sample ファイルをチェックインし、実際の構成ファイルを .gitignore します。これは、たとえば、この回答で推奨されています。これに関する主な問題は、構成ファイルへの変更が簡単に忘れられてしまうことです。2 つの異なる時点で: コミッターは、.sample
ファイルに追加する必要がある変更を簡単に見逃す可能性があり、コンシューマー (特に継続的インテグレーション サーバー) は簡単に見逃す可能性があります。ファイルから.sample
ローカル構成ファイルに組み込む必要がある変更。基本的に、それはあまり良い解決策とは思えません。
オプション 2: チェックインされた xxx.defaults ファイルと、定義されている設定を上書きする .gitignored xxx.local 構成ファイルを用意します。これは、例としてここで提供されます。ここでの問題は、標準の .Net 構成プロバイダーを使用して作業していることです。Mirosoft がすべての作業を既に行っているのに、まったく新しい設定読み込みフレームワークを実装したくありません。オプションのローカル オーバーライド ファイルを参照するように app.config および web.config ファイルを取得する方法を知っている人はいますか?
オプション 3: 開発者にローカル ブランチを保持してもらい、常にチェリー ピックまたはリベース ブランチを master にチェックインさせて、ローカル ブランチでの不要なコミットを常にバイパス/回避する: これは可能なワークフローとしてここで提供されています。変更の追跡 (すべてのチェックイン) の点でクリーンであることを高く評価します。チェックインのたびに必要なオーバーヘッドがかなりの量になります。それは大きな痛みです!
オプション 4: 構成ファイルをチェックインし、次のようにマークする: これは、--assume-unchanged
ここで可能なオプションとして提供されます。私が知る限りignore-on-commit
、TortoiseSVN の変更リストと精神的に非常に似ていますが、コミット プロセスでこれらの「隠された」変更済みファイルが表示されない点が異なります。たとえば、TortoiseGit は「変更された」アイコン オーバーレイでファイルを表示しますが、コミット ダイアログではファイルがまったく表示されません。これは少し恐ろしいように思えますが、ここでも変更のチェックを忘れがちです。
私が見つけたすべてのオプションであるこれらのオプションを考えると、チェックインされた app.config/web.config ファイルにローカル構成ファイルをオプションで「含める」方法を本当に望んでいます2 ; これを行う方法、または私が見逃している他のオプションを知っている人はいますか? (カスタムの Xml マージ ビルド前の手順を検討したいという気持ちがかすかにあります...)
前述のとおり、まだ VS2008 を使用しているため、構成変換は使用できません。
更新:(削除されました、明らかに間違っていました)
更新 2:以前の更新と回答を削除しました。それはばかげていました/機能しませんでした。「私たちの」マージの後、反対方向の次のマージで、それらのファイルの「元の」バージョンが戻される (ローカル ブランチの変更が上書きされる) ことに気付きませんでした。興味のある方は編集履歴をご覧ください。この質問は相変わらずオープンです。