15

TFS 2013 Update 4 で VS2013 Update 4 を使用しています。ソース管理エクスプローラーで、あるフォルダーから別のフォルダーにファイルを移動するたびに、ファイルの履歴が新しい場所に保存されていることがわかります。ただし、保留中の変更をチェックインすると、その履歴はなくなります。「tf move」コマンドを実行しようとすると、同じことが起こります。では、TFS でファイルを移動し、ファイルの履歴を保持するにはどうすればよいでしょうか?

4

4 に答える 4

22

ファイルの名前が正しく変更されると、履歴は「なくなった」のではなく、代わりに「古い名前」に関連付けられます。正しい方法で行われた名前変更 (削除 + 追加ではなく名前変更として追跡) には、「古い」履歴を表示するためのドリルダウン オプションがあります。

ここに画像の説明を入力

  • 変更セット 81~82 には、古い名前への変更が含まれています。
  • 変更セット 83 には、削除 + 名前の変更が含まれています
  • Changeset 84 名前の変更後にチェックインされた新しい変更

ソース管理エクスプローラーの外部 (または非常に古いバージョンのソース管理エクスプローラー (VS 2008 など)) またはソリューション エクスプローラーの外部で名前変更が行われると、変更は 2 つの個別のアクションとして検出されます。1 つは削除、もう1 つは削除です。追加します。「保留中の変更」ウィンドウを使用して、これらを名前変更に昇格させ、履歴が保持されるようにすることができます。

ここに画像の説明を入力

コマンドラインでは、これは "tf rename" と "tf move" を使用してのみ達成できます。標準の「mv」および「ren」コマンドを使用すると、履歴を保存できません。

以下は、すべての異なる方法を使用し、現在のファイル名の履歴を見ることで履歴が保持されていることを明確に示している別の例です。

ここに画像の説明を入力

コメントで述べたように、履歴は項目のリビジョンを含むチーム プロジェクトに保存されます。プロジェクト間で分岐/移動すると、履歴はこれらのプロジェクト全体に分散されます。チーム プロジェクトを削除すると、そのプロジェクトに蓄積されたすべての履歴が失われます。

于 2015-05-07T18:44:51.083 に答える
2

この質問からこの問題にたどり着きました。

この問題は TFS2010 以降に存在し、名前変更または移動されたファイルだけでなく、名前変更または移動されたフォルダーの問題でもあります。最悪なのは、ブランチの名前を変更してからフォルダの履歴を確認する場合です。次に、名前変更チェンジセットのみを見つけます。

ここでは、このタスクに対する MS の反応を見ることができます。基本的に彼らはそれをやっていないと言っています。

私はこの事実に耐えることができず、これに対する修正プログラムをプログラムしました。SP dbo.prc_QueryHistoryで再帰的な履歴選択が行われます。SP を変更し、次の機能を追加しました。

  • (最後の 256 個の変更セットを再帰的に検索する通常の方法として)
  • 次に、変更セットの一部が名前変更/移動操作を表しているかどうかを確認します
  • その場合、再帰的に(ループで)各名前変更/移動を元のItemIdにたどり、この手順を繰り返します(ファイル/フォルダーの名前が複数回変更された場合)
  • 次に、以前の ItemIds への以前のすべての変更セットも検索します (移動/名前変更により ItemId が変更されます)。
  • 新しく見つかった変更セットを変更セットのリストに追加し、行 256 で切り取ります

その結果、履歴が遅くなります (特に、深いフォルダー ツリーのルートで実行した場合) が、問題は修正されています。そして、私は不完全な歴史よりもゆっくりとした歴史とともに生きています。

私が書いた SP を提供することはできますが、MS で保護されたコードが含まれているため、ここで公開できるかどうかはわかりません。(そしてもちろん、システムを更新するときに修正が持続することを保証することはできません。 - TFS 2013 SP3 で SP を書きました。)

更新: MS に修正を公開する許可を求めました (投稿の 2 番目のリンク)

于 2015-04-30T16:53:49.147 に答える
0

jessehouwing の修正がフォルダーに対して機能するとは思わない。実際、VS 2012+ のソース管理エクスプローラーを使用すると、フォルダーの移動によってファイルの履歴が保持されますが (VS では再帰的に表示されます)、フォルダーは保持されません。フォルダの履歴はフラットです。

この問題の解決策:

  1. Microsoft は、VS でのフォルダー履歴の表示方法を修正するか、[再帰履歴を表示] コンテキスト メニュー項目を追加します。
  2. すべての変更セットをあるフォルダーから別のフォルダーに移行します。残念ながら、TFS 2013 または VSO でこれを実行できるツールをまだ特定できません。
于 2015-06-25T19:56:33.497 に答える