ブランチ メソッドを使用して TFS でコードが分岐される場合、コードは物理的に分岐されますか?それとも論理的に分岐されますか? 論理的には、それは単なる変更セット (変更されたデルタ) なのか、それともすべてのファイルがコピーされたのかということです。
2 に答える
分岐ファイルは、TFS データベース内ではコピーされません。分岐バージョンが変更されるまで、ファイルの新しいバージョンは作成されません。これが、大規模なプロジェクトでブランチを作成するのに永遠に時間がかからない理由です。
ソース:
分岐の下の 4 番目の段落では、同一のファイルの別のコピーを作成しないことを説明しています。
ブランチを作成すると、追加のストレージ スペースはほとんど使用されません。サーバーは、フォルダーにいくつの異なるファイルが含まれていても、同一のコンテンツのコピーを 1 つだけ保持することで、必要なストレージを最小限に抑えます。したがって、1 MB のファイルのコピーが 100 個あり、すべてのファイルが同一である場合、サーバーは 100 MB ではなく 1 MB のみを保存します。新しいブランチを作成してコミットすると、ソース ブランチ内のファイルと同一の新しいブランチ内のすべてのファイルが同じコンテンツを指します。その結果、ブランチは追加のストレージ スペースをほとんど消費せず、そのストレージ スペースは、ブランチされたファイルがソースとは異なる場合にのみ拡張されます。また、ファイルが変更された場合でも、Team Foundation Server は差分エンジンを使用してファイル間の変更を分析し、ストレージ スペースを再び最適化します。
Microsoft 分岐ガイダンス PDF:
http://geeks.netindonesia.net/downloads/etc/TFS-Branching.pdf
簡単な答え:ブランチは論理的に保存され、親の直接コピーではありません。
長い答え:VS ALMRangerのBillHeysは、ブランチとファイル履歴がTFSにどのように保存されるかを説明する詳細なブログ投稿を書きました。