Visual Studio 2005 と 2008 の別々のバージョンのライブラリを維持しながら、一方のブランチへの変更が常に他方のブランチにレプリケートされるようにするワークフローを開発しようとしています。
現時点では、変更はデフォルト (VS2005) ブランチに対してのみ行い、完了したら VS2008 ブランチにマージすることをお勧めします。残念ながら、これは、問題が見つかったときや危機に瀕しているときに問題を修正するだけでなく、それが難しい場合があるという規律に依存しています。これにより、あるブランチからの変更を後でデフォルトに戻すことを試みる必要が生じました。
VS2005 と VS2008 プロジェクトの間の変更をパッチ キューに保存できることはわかっていますが、コマンド ラインの使用に慣れているのはチーム内で私だけであり、同僚は Tortoise HG を使用してすべてを行うことを好みます。
そのため、私は事後の問題の修正に依存しています。私の現在の手順では、VS2008 ブランチのすべての変更セットのパッチをエクスポートし、それらをデフォルト ブランチに適用しています。これには時間がかかりますが、VS2008 ブランチのヒントをデフォルトのヒントとマージしてから、手動で VS2005 に戻すよりもエラーが発生しにくくなります。
この記事を読んで、「アップグレード」チェンジセットを取り消そうとしましたが、結果のバックアウトチェンジセットは常に VS2008 ブランチの新しいヒントとして終わります。さらに、変更をマージして元に戻すことはできません。 VS2008 ブランチでは、コミット時にブランチを明示的に閉じようとしても。
さまざまな方法でこれを試してみましたが、常に新しい VS2008 ブランチのヒントになり、変更をデフォルトのブランチにマージする方法がありません。そのため、ここで明らかな何かを見逃していることに気づき始めています。
結局のところ、プロジェクト ファイルとソリューション ファイルに埋め込まれた Visual Studio のバージョン番号だけが必要なライブラリの 2 つのバージョンを維持しようとするとき、他の人は何がベスト プラクティスだと感じるでしょうか?
編集:私が回避しようとしている問題は、VS2005 プロジェクトを VS2008 ソリューションに追加すると (デバッグを容易にするために)、VS2005 プロジェクトが VS2008 に自動的に「アップグレード」され、その結果、「変更された」作業コピーと飛散が発生することです。不要な「変換」ファイルの。したがって、人々がメインラインへの「アップグレード」をコミットしたくなるよりも、ブランチを別々に保ち、ユーザーがクローン後の最初の更新で必要なバージョンを選択するように要求することを好みます。
さらに編集して、解決策を示します。
さらにいじって、このワークフローを標準の TortoiseHg ツールで動作させる方法を見つけました。コマンド ラインの介入は、セットアップのみに必要でした。
まず、プロジェクトが VS2005 から VS2008 に変換された変更セットに更新しました。そのリビジョンをバックアウトし、バックアウトのパッチを作成し、バックアウトされた変更セットを削除しました (デフォルト ブランチにあったため)。次に、変換変更セットにバックアウト パッチを適用し (hg patch --no-commit patch を使用)、新しい「VS2005」ブランチ名でパッチをコミットしました。次に、(名前のない) VS2005 ブランチの先端にマージしました。
次のステップは、(変更されていない) VS2008 ブランチの古いヒントに更新し、重要でない変更を加えて、新しい「VS2008」ブランチとしてコミットすることでした。次に、VS2005 のヒントからの変更をマージしましたが、コミットしたときに、csproj ファイルへの変更をコミットできませんでした。次に、コミット後にこれらのファイルを元に戻しました。
最後に、VS2005 のヒントに更新し、VS2008 のヒントにマージしました。
これにより、VS2005 から VS2008 への変換による違いを除いて、同じコードを持つ 2 つのヒントが得られました。
新しいワークフロー:
- 必要に応じて、VS2005 または VS2008 ブランチで作業します。
- 1 つのブランチで更新が完了したら、他のブランチを更新し、変更されたブランチからの変更をマージして、独自のブランチにコミットします。次に、好みのブランチに更新します。
- 両方のブランチで同時に更新が発生する場合は、両方のブランチを別々に実行します。VS2005 のヒントに更新して VS2008 のヒントにマージしてから、VS2008 のヒントに更新して以前の (マージ前の) VS2005 のヒントにマージします。