TFS 2013 Update4でVS2013Update 4を使用しています。ソース管理エクスプローラーで、ファイルをあるフォルダーから別のフォルダーに移動するたびに、ファイルの履歴が新しい場所に保存されていることがわかります。ただし、保留中の変更をチェックインすると、その履歴は失われます。 「tfmove」コマンドを実行しようとすると、同じことが起こります。では、TFSでファイルを移動し、ファイルの履歴を保持するにはどうすればよいでしょうか。
ファイルの名前が正しく変更されると、履歴は「Gone」ではなく、代わりに「古い名前」に関連付けられます。正しい方法で行われる名前変更(削除+追加ではなく名前変更として追跡される)には、「古い」履歴を表示するためのドリルダウンオプションがあります。
ソース管理エクスプローラーの外部(または非常に古いバージョンのソース管理エクスプローラー(VS 2008など)から)またはソリューションエクスプローラーの外部で名前の変更が行われると、変更は2つの個別のアクションとして検出されます。1つは削除と1つ追加。 [保留中の変更]ウィンドウを使用して、これらを名前変更に昇格させ、履歴を保持することができます。
コマンドラインでは、これは「tfrename」と「tfmove」を使用してのみ実行できます。標準の「mv」および「ren」コマンドを使用すると、履歴の保存に失敗します。
以下は、すべての異なる方法を使用し、現在のファイル名の履歴を確認することで履歴が保持されていることを明確に示す別の例です。
コメントで述べたように、履歴はアイテムの改訂を含むチームプロジェクトに保存されます。プロジェクト間で分岐/移動すると、履歴はこれらのプロジェクト全体に広がります。チームプロジェクトを削除すると、そのプロジェクトに蓄積されたすべての履歴が失われます。
私はこれからこの問題に来ました 質問 。
この問題はTFS2010以降に存在し、名前を変更または移動したファイルだけでなく、名前を変更または移動したフォルダーにも問題があります。最悪の場合は、名前を変更したブランチを作成してから、フォルダーの履歴を確認することです。次に、名前変更変更セットのみが見つかります。
ここ このタスクに対するMSの反応を見ることができます。基本的に、彼らはそれが多くの仕事であり、歴史を遅くするので、彼らはそれをしていないと言います。
私はこの事実に耐えることができず、これに対する修正をプログラムしました。再帰的な履歴の選択はSPdbo.prc_QueryHistoryで行われます。SPを変更し、次の機能を追加しました。
影響は履歴が遅くなりますが(特に、深いフォルダーツリーのルートで実行した場合)、問題は修正されます。そして、私は不完全なものよりもむしろ遅い歴史で生きています。
私が書いたSPを提供できますが、MSで保護されたコードが含まれているため、ここで公開できるかどうかはわかりません(もちろん、修正を保証することはできません)。システムを更新しても持続します。-TFS2013SP3でSP)を記述しました。)
更新:修正を公開する許可をMSに要求しました(投稿の2番目のリンク)
私のtf move
の経験を見つけてください
TFSにはmain
ブランチがありました。 mainと同じ階層レベルでmain-rest
を作成しました。次に、main-rest
を別のサブフォルダーに移動しようとしました(実験的なブランチを$ルートからサブフォラーに移動するため)。
ローカルフォルダのマッピングを削除して実行しました
tf move $/projectName/main-rest $/projectName/experimental/main-rest
このコマンドは、ブランチ内のすべてのファイルを出力にリストしました。次に、変更をコミットしました。
見た目は問題ありませんが、*ブランチフォルダの履歴はもうありません*マージはマージする変更セットを認識しません
移動する前に、main-rest
からmain
ブランチにマージする可能性がありました。引き続き使用できますが、マージ時に選択するチェンジセットはありません。
「選択したチェンジセットのみをマージ」オプションには、「移動した」チェンジセットが1つだけあります。これは、main-rest
がexperimental
サブフォルダーに移動された後に発生しました。
master-rest
ブランチ全体をマージできることを願っています(ただし、テストするのに適切なタイミングではありません)
VS2017に同梱されているtf.exeコマンドラインユーティリティを使用しました(本日利用可能な最新のアップデートがパッチされています)。ソースコードはクラウドtfsでホストされています( https://dev.Azure.com )
よろしく
Jessehouwingの修正はフォルダでは機能しないと思います。実際、VS 2012+のソース管理エクスプローラーを使用している場合、フォルダーの移動はファイルの履歴を保持しますが(VSでは再帰的に表示されます)、フォルダーの場合は保持されません。フォルダの履歴はフラットです。
この問題の解決策: