2

.Net Mvc アプリケーションには Mercurial を使用しています。ブランチをマージすると、web.config に異なる接続文字列があるという問題に直面します。

例えば

connectionString="data source=Dev1\MSSQLSERVER2012;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf; User ID=sa; Password=pass1

2 番目の web.config

connectionString="data source=Dev2\MSSQLSERVER2012;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf; User ID=sa; Password=pass2

構成を何度も編集したり書き直したりせずに構成をマージする方法。web.config ファイルを無視するだけでは役に立ちません。Mercurial には「ファイル セクションを無視する」オプションがありますか?

4

3 に答える 3

2

私は同じ状況を持っています: 伝播を防ぎたいローカル構成ですが、同じファイルをプッシュおよびプルできるようにしたいです。パッチをいじる代わりに、次のようにしています。

レギュラーがブランチで行われるとしましょうdefault(複数のブランチが存在する可能性があります。これは具体性のためです)。

  1. 構成状態のない、 のクリーンな最新バージョンに更新しますdefault
  2. 新しいブランチを作成しますlocal。このブランチで、すべてのローカル構成を 1 つ以上の変更セットとしてコミットします。
  3. の先端でlocal、新しいブランチ を作成しますdev。ここで新しい機能を開発します。

    履歴は次のようになります。

    ...o--o      (default)
           \
            L--L    (local)
                \
                 d--d--d  (dev)
    
  4. プッシュする準備ができたら、devブランチ全体を の先端にリベースしdefaultます。

    hg rebase --source "min(branch('dev'))" --dest default --detach
    

    機能に保持したい独自のブランチ名がある場合は--keepbranches、オプションに追加しrebaseます。前のツリーは次のようになります。

    ...o--o--d--d--d   (default)
           \
            L--L    (local)
    
  5. push -r defaultローカル リビジョンに沿ってドラッグすることなく、新しい機能を公開できるようになりました。local ( からに マージしないでくださいdefault。その逆のみです)。プッシュするときに言うのを忘れても-r default問題ありません。新しいヘッドが追加されるため、プッシュは拒否されます。

  6. 引き続き開発サーバーで、リベースされたリビジョンを次のようにマージしますlocal

    ...o--o--d--d--d   (default)
           \        \
            L--L-----N    (local)
    
  7. devの上に新しいブランチを作成し、local開発を続けることができるようになりました。

このようにして、私のローカル構成はソース管理下にあります。新しい機能と競合する場合は、他のマージと同様に解決できます。何か問題が発生した場合は、構成済みの古いバージョンに更新できます。

私のケースには、リビジョン管理下で構成されたクローンも含まれます。この回答で完全な解決策を見ることができます。

于 2012-12-23T13:15:19.250 に答える
1

MQを使用して (1 つまたは 2 つの) パッチを作成します。これにより、両方のブランチで共通の同一の共通のweb.config がブランチ固有の状態に変換されます。

于 2012-12-21T18:02:05.403 に答える
1

Mercurial の回答ではありませんが、接続文字列をandlocalhostの代わりに参照するように変更できませんか? また、構成ファイルにパスワードを含める必要がないように、Windows 認証に変更する必要があります。Dev1Dev2

それが私たちのチームのやり方であり、問​​題はありません。

于 2012-12-17T19:09:20.123 に答える