15

開発ブランチをメインブランチにマージしています。開発ブランチで変更したファイルのサブセットのみがあり、他のすべてのファイルは変更されないままである必要があります。論理的には、変更したファイルのみをマージしたいと思います。変更していないファイルはチェックインしません。

しかし、TFSでマージ操作を実行すると、ツリー内のすべてのファイルに変更タイプ'merge'のマークが付けられます。ソースコードツリー全体のすべてのファイルをチェックインする必要があるようです。チェンジセットを見て、プロジェクトの一部として実際にどのファイルを変更したかを確認することができなくなるため、これは本当にやりたくありません。

最初は、tfpt.exe Undo Unchangedコマンドを使用して、すべての「マージ」変更を元に戻すことができると思いましたが、これではそれらの変更は元に戻されません。

誰かがこれについて何かアイデアがありますか?ありがとう。

4

3 に答える 3

10

これは、根拠のないマージでも発生します。ベースレス マージは、マージするブランチ間に既存のマージ関係が TFS にない場合に発生します。その結果、両方のブランチのすべてのファイルが「新しい」と見なされるため、すべてのファイルが「マージ」されます。

将来のマージで実際に変更したファイルのみが一覧表示されるようにマージ関係を作成するには、TFS が共通のベースラインがどうあるべきかを認識できるように、指定されたバージョンまでのすべての変更のベースレス マージを実行する必要があります。これらの変更をマージした後にこれを行う必要があります。このブランチのベースラインを修正するには遅すぎます。

他のブランチから実際に変更を加えたくないが、これらが論理的に同じバージョンであることを TFS に伝えるだけの場合は、チェンジセットの「信用を与える」マージを行うことができます: tf merge /discard.

于 2014-04-02T10:36:48.797 に答える
7

考えられる理由はいくつかあります。これは完全なリストではありません:

  • 「マージ」とマークされたファイルの親フォルダーでネームスペース操作 (削除、削除取り消し、名前変更) を実行しました
  • ターゲット ブランチで既に実行されている名前空間操作 (削除、削除の取り消し、名前変更) を実行しました
  • 一連の名前空間操作を実行しましたが、操作は行われませんでした (たとえば、削除 + 削除の取り消し、または a -> b -> a の名前変更)。
  • 未解決の競合があります
  • あなたは破棄を行っています

注: これらはすべて 2005 年と 2008 年に等しく適用されます。

于 2009-06-26T13:10:17.993 に答える
1

Visual Studio 2008 および TFS 2008 では、これは発生しません。変更されたファイルのみがマージとしてマークされます。ブランチとトランクの間でファイルを比較すると、変更はありますか? エンコーディングなどの変更により、TFS はこのファイルを再びマージします。

于 2009-06-25T19:44:49.963 に答える