2

私は最近棚付けについて読んで、それは非常に便利な概念だと思いました. そのため、次に誰かが私のアプリケーションのバグで私のところに来たとき、私はそれに対して行っていた大規模な作業を棚上げし、バグを修正し (クラスに ~30/40 の変更を加え、いくつかのリファクタリングも行いました)、修正されたものをチェックインしました。コード。

作業中のコードの保留を解除したいのですが、行った変更も保持します。問題は、サーバー上のファイルにこれらの大幅な変更を加えたにもかかわらず、これらの変更がシェルブに加えられていないことです。

ここで何ができますか?すべてを再度マージするには、数時間/数日かかるようです。Eclipse には、2 つのファイルを比較して、変更ごとにサーバー上のバージョンとローカル バージョンのどちらを取るかを決定できる素晴らしい機能があることを知っています。棚にあるバージョンとローカルバージョンのどちらかを選択できるようなものは完璧でしょう.

ここで私の生活を楽にしてくれるものはありますか、それともシェルフセットを調べて、競合のある各ファイルを調べ、サーバーのバージョンを見て、ローカルのバージョンを見て、ローカルのバージョンの一部をメモ帳ファイルにコピーする運命にありますか?それらをサーバーバージョンにコピーします...など。それは恐ろしい混乱のようです。

誰でも私を助けることができますか?

4

3 に答える 3

6

サーバー バージョンまたはローカル バージョンのみを選択する必要はありません。代わりに、慣れ親しんだ 3 方向マージ ツールを使用して競合を解決できるはずです。

ここで推奨されるプラクティスに従っているようです。

  • バージョン 2 で最新のファイルがあり、そのファイルの編集を開始すると、そのファイルに保留中の変更があるとします。
  • そのファイルを保留すると (保留中の変更を元に戻す)、保留中の変更がないバージョン 2 に戻ります。
  • そのファイルを編集してチェックインすると、サーバーは新しいバージョンになります (バージョン 3 としましょう)。
  • その後、その既存のシェルブセットを取り消す場合、変更は再びバージョン 2 に対して行われます。つまり、変更が最新ではないバージョンに対して保留されている場合です。

    ソース管理エクスプローラー

当然のことながら、これは競合があることを意味します。Get Latest または Checkin を実行すると、これらの競合を解決できます。これらは、Visual Studio の下部にあるビューに表示されます。

解像度オプション

ご指摘のとおり、Take Server Version と Keep Local Version のオプションがあります。ただし、AutoMerge (変更を自動マージできる場合、つまり、サーバーとローカル ファイルの両方で変更されたファイルの領域がない場合) と Merge Changes In Merge Tool (これにより、 3 者間マージ ツールを開きます。)

[マージ ツールで変更をマージ] を選択すると、組み込みの 3 方向マージ ツールが表示されます。

3 方向マージ ツール

組み込みの 3 方向マージ ツールが気に入らない場合 (私は 2010 に含まれているものは好きではありません。VS 2012 にはより優れたエクスペリエンスが含まれています)、Visual Studio で任意の 3 方向マージ ツールをプラグインできます。オプション:

マージ ツールの構成

マージ ツールでマージするオプションが完全に欠落している場合、バイナリ ファイルで作業していると TFS が認識している可能性があります。TFS では、ファイルがバイナリとしてマークされている場合 (より正確には、"File Merging" が "Disabled" に設定されている場合)、これらのファイルを自動マージしたり、マージ ツールでマージしたりするオプションはありません。これは、競合中に大きなバイナリ ファイルの 2 つの余分なコピーをダウンロードすることを回避し、それらをマージ エンジンに詰め込もうとすることを回避するための最適化です。

チーム エクスプローラーを開き、プロジェクト コレクションを右クリックして、[チーム プロジェクト コレクションの設定] > [ソース管理ファイルの種類...] を選択することで、"結合できない" ファイルの種類を構成できます。このダイアログで「マージ可能」として:

ファイルの種類ダイアログ

于 2012-09-19T14:34:00.043 に答える
2

棚上げを解除する前に、プロジェクトをクリックGet Specific Version...してください。新しいウィンドウで、タイプをLatest Version他の選択肢の1つに変更します(ケースに最適な方、おそらくチェンジセットまたは日付)。目標は、変更を棚上げしたときにマシン上にあったチェンジセットを選択することです。

ここに画像の説明を入力してください

自分のセットと同じバージョンをチェックアウトすると、エラーなしで棚を開けることができます。次に、を実行し、Get Latestそのときに発生する競合を解決します。

于 2012-09-19T13:54:14.593 に答える
0

コードをチェックインして棚をロードするだけでよいと思います。変更を元に戻し、必要に応じて再度チェックインします。

TFS と VS2010 のマージも行単位で可能です。マージの競合がある場合は、そのように表示されます。また、Sourcecontrol の優れた機能は、いつでも前後に移動できることです。

于 2012-09-17T09:05:11.223 に答える