web-dev-qa-db-ja.com

TFSで分岐およびマージする方法

この質問は、前の質問から派生したものです。 プロジェクト間で共有されるリソースのバージョン管理方法

他の多くのプロジェクトで使用されるコードを含むプロジェクトがあります。具体的には、この親プロジェクトの1つのフォルダーが、依存する子プロジェクトに分岐しています。

その後、親プロジェクトに変更を加えてチェックインしました。ソース管理エクスプローラーで、親プロジェクトの分岐フォルダーを右クリックし、「マージ」を選択して、変更を依存プロジェクトにプッシュします。宛先として子プロジェクトを選択し、「最新バージョン」を選択します。ウィザードは、「マージする変更はありません」と通知します。

私の観点からは、最近更新されたファイルは明らかに異なるため、これは真実ではありません。

ここでTFSのマージプロセスの基本的な誤解はありますか?別に何をする必要がありますか?

23
betitall

TFSマージエンジンは、ファイルの内容ではなく、ほぼ完全に履歴に依存しています。これにより、非常に大きなツリーで効率的になり、安全にチェリーピッキングの変更などのタスクに柔軟に対応できますが、質問への回答も難しくなります。

最初のステップは、診断コマンドtf history、tf merges、およびtf merge/candidate。ここに良い紹介があります: http://blogs.msdn.com/dstfs/archive/2009/04/15/a-note-on-merging-and-the-use-of-tf-merges- tf-merge.aspx

TFSでの分岐とマージを初めて使用する場合、おそらくあなたの歴史はそれほど複雑ではありません。 tf mergesへの簡単な呼び出しで答えが見つかる可能性が高いと思います。ただし、一般的な場合、マージ履歴のトレースは非常に複雑になる可能性があるため、問題が発生した場合は、詳細を投稿してお気軽に投稿してください。

17
Richard Berg

「親」プロジェクトで変更されたことがわかっている特定のファイルに移動します。そのファイルだけをマージしてみてください。何もチェックインしないでください。何が起こるか見てください。

注意すべき点:マージツールには、分岐後に追加されたファイルは含まれません。さらに変更をマージする前に、新しいファイルを明示的に分岐する必要があります。ブランチ操作を使用せずにファイルを親フォルダーと子フォルダーの両方に追加した場合、マージツールはそれらを同じファイルのバージョンとして扱いません(そして、それらの間の変更をマージすることはできません)。

2
Robert Lewis