web-dev-qa-db-ja.com

変更されていないマージを実行すると、保留中の変更としてリストされたファイル?

この時点でこれがまぐれ以上であると考えた場合、これが数回以上発生しました。ブランチが完成した後でマージしているときは、変更がはるかに多いはずです。したがって、保留中の変更として表示されているほとんどのファイルは変更されませんでした(ほとんどの場合、ブランチとベースのどちらにもありません)。それらを比較するとき(比較を超えて使用するとき)、違いはありません。変更されなかったすべてのファイルを調べたわけではありませんが、ほとんどの場合、それらは[merge]としてマークされ、実際に変更されたファイルは[merge,edit]としてマークされているようです。

1つのケースでは、約100個のファイルを変更した可能性があり、保留中の変更は22,000以上の変更を示しました。ある時点でそれらをチェックインしてみましたが、tfsはどのファイルが変更され、どのファイルが変更されなかったかを知るのに十分賢いと考えました。しかし、すべてのファイルをチェックインしました。誰が何が起こっているのか、そしてそれを修正する方法を知っていますか?

TFS 2012 w\Update1を実行しています
全員がVisual Studio 2012 w\Update 1を使用しています。

32
coding4fun

100個のファイルを変更し、TFSが数千をマージしたいという問題について。これは通常、ブランチの 名前の変更 (または削除してから削除解除、または移動)が原因で発生します。これは私に数回噛まれてあなたの痛みを感じます。

私ができる最善のアドバイスは、ブランチを作成したら、そのままにしておきます。移動したり、名前を変更したりしないでください。ブランチの場所または名前が間違っている場合は、ブランチを削除して新しいブランチを作成するときまで、一緒に住んでください。

TFS 201xがバックグラウンドで動作する方法のため、ブランチのルートフォルダーを変更すると、ブランチが別のオブジェクトに変換されます。ブランチを再度マージしようとすると、TFSはベースレスマージを実行します。つまり、ブランチ内のすべてのファイルが変更されていないように見えます(これは変更されていません)。これは、TFSの古いバージョン(2005/2008)の新しい動作です。 )この問題に悩まされないでください。

例えばこのようなチームプロジェクトがあります

$/TeamProject/Main

次に、「メイン」から「Dev」というブランチを作成します。

$/TeamProject/Dev

好きなだけマージすることができ、何の問題もないはずです。次に、いくつかの開発ブランチがある場合、フォルダー構造が少し乱雑になる可能性があると判断し、チームプロジェクトのルートに「開発」というフォルダーを作成し、このフォルダーに開発ブランチを移動します。

$/TeamProject/Development/Dev

移動は名前の変更と削除であり、古いdevブランチは$/TeamProject/Devの下にまだ存在します(「ツール」、「オプション」、「ソース管理」、「チームファンデーション」に移動するとこれを確認できます)サーバー」、「ソース管理に削除済みアイテムを表示する」という設定を確認します

$/TeamProject/Development/Devというフォルダは、実際にはまったく新しいものです。したがって、「メイン」とのマージ関係はありません。 IDE=は関係を示しますが、実際には存在しません。混乱します。初めて$/TeamProject/Development/Devto $/TeamProject/Mainからマージすると、TFSは卑劣なベースレスマージを実行して、分岐関係を確立します。

ブランチの名前を変更した場合も同じことが起こります(古いブランチは削除され、新しいブランチがカバーの下に作成されます)。

このブログ は、もう少し詳しく説明します

24
James Reed

同じ問題を抱えている人にとって、回避策は保留中の変更を元に戻すことです。確認ダイアログが表示されたら、[すべていいえ]を選択します。保留中の変更のみを残してください。

38
coding4fun

元に戻す確認ダイアログの[すべていいえ]オプションを使用した上記のコメントは問題なく機能しますが、Mark Hosangによるコメントのとおり、新しいファイルがある場合は正しく機能しません。 Mladen Mihajlovicは、これらの新しいファイルを選択しないようにすることができます。ただし、コードベースが大きい場合、これをたどることは非常に退屈です。

だから私の方法:確認ダイアログに進む前に、元に戻すファイルを選択するウィンドウが表示されます。このウィンドウにはソート可能な列があります。 Change列でソートし、mergeステータスのファイルのみを選択できます(これらは変更されていないファイルですmerge, editは編集されたファイルであり、merge, branchは新しいファイルです)。選択したものだけで[変更を元に戻す]をクリックするだけで、整理されたマージチェンジセットの美しさを楽しむことができます。

Example

7
broken-e

これを試して:

  1. 保留中のすべてのファイルを選択
  2. コンテキストメニューで[元に戻す...]をクリックします
  3. [保留中の変更を元に戻す]ダイアログで、[変更]列でファイルを並べ替えます
  4. shift +クリックを使用して「マージ」を除くすべてのファイルの選択を解除します
  5. 「変更を元に戻す」ボタンをクリックします
6
WURMi

私の経験から、これはTFSがブランチAのファイルAとブランチBのファイルBの間に関係がない場合に発生します。

ブランチをマージするとき、TFSは、まだ関係が存在していない場合、常にファイル間の関係を作成します。したがって、これらの関係を記憶するために「マージ」としてチェックインする必要があります。

リレーションシップなどの関係が不要な場合は、これらの「マージ」の変更を元に戻す傾向があります。

0
ViRuSTriNiTy