web-dev-qa-db-ja.com

TFS:バッチファイル内の変更されていないファイルのチェックアウトを元に戻す方法

バッチファイルを使用してコードを生成し、Team Foundation Server(TFS)から生成されたファイルを自動的にチェックアウトして、再生成できるようにします。これらのファイルの大部分は変更されませんが、ジェネレーターは事前にこれを知りません。

「tfs undo」コマンドはチェックアウトを取り消しますが、一部が変更された場合はプロンプトを表示します(これは行いたくない)。また、生成されたファイルをすぐにチェックインしたくありません。

ユーザーにプロンプ​​トを表示せずに、変更されていないすべてのファイルのチェックアウトを取り消すコマンド(または一連のコマンド)はありますか?

170
Robert Wagner

Team Foundation Server Power Tools 2011年8月のUndo Unchangedコマンドをご覧ください

c:\myProject> tfpt uu . /noget /recursive

リンクの更新についてMatt Florenceに感謝します。

実際の構文 に対してRay Vegaに感謝します。

199
Mike Chaliy

Team Foundation Server Power Tools をインストールし、プロジェクトのワークスペースディレクトリのルートでtfpt.exeを使用してコマンドラインから次を実行します。

c:\myProject> tfpt uu . /noget /recursive

/nogetを含めることを強くお勧めします。これは、合計数によっては非常に長い時間がかかる可能性のある、プロジェクトのすべてのファイルの強制的な「最新版の取得」を防ぐためです。

124
Ray Vega

@mike&@rayありがとう

もっと簡単にしたいです。

VSの[ツール]メニューで、[外部ツール]をクリックします。

External Tools

追加をクリックします。

タイトルを入力してください。

コマンド:tfpt.exe

引数:uu/noget/recursive

初期ディレクトリ:[矢印ボタンから選択できます]。

Undo unchanged in solution

Undo unchanged in project

[ツール]メニューに2つの新しいコマンドが追加されました。

必要なときに使用してください。

楽しい、

Ofir

118
Ofir
  1. プロジェクトを右クリックします
  2. [チェックアウトを元に戻す]を選択して、[OK]をクリックするか、残りの確認をクリックします...
  3. 次に、チェックアウトの取り消し中に、実際に変更が加えられたすべてのファイルについて、プロンプトでそのファイルのチェックアウトを確認するように求められます...単に「すべていいえ」をクリックします

Visual Studioは、チェックアウトされたファイルに変更があるかどうかを認識します。

警告:このメソッドは、newファイル、つまりTFSにまだチェックインされていないファイルも削除します。これらのファイルを保持したい場合は、単に「元に戻す」ファイルのセットからそれらを除外します。

26
Ray Lionfang

TFS2017およびVS2017/VS2019のみ。

パワーツールはTFS 2017には存在せず、古いツールはTFS 2017と一緒に動作することはできませんが、明らかに機能のほとんどはVS2017自体またはプラグインに移動されました(以下を参照)。

Visual Studio 2017/2019拡張

変更されていないファイルを元に戻すなどの一部のアクションは、

VS2017の拡張子

VS2019の拡張子

[元に戻す]ボタンの場所:

undo unchanged button location

既知のバグ

「保留中の変更」ビューの「アクション」メニューに「元に戻す」が表示されるように、「ソース管理エクスプローラー」を開く必要があります。 ここで報告

Windowsシェル統合拡張機能

また、TFS Power Toolsにリンクされなくなった separate installer を使用して、Windowsシェル統合をセットアップすることもできます。

Windowsシェルの統合は、以前のpowertoolsとまったく同じようには機能しませんが、最も重要なアクションが機能しました。

8
Schwarzie2478

チェックアウトしたすべてのファイルを再度チェックインするだけで、TFSはどれが変更されたかを把握し、サーバーに記録されている変更セットにのみそれらを含めることができます。

TFSは、チェックインの前後にファイルコンテンツのMD5ハッシュを比較することでこれを行います。

これはすべて、生成プロセスが同じファイルセットを純粋に更新していることを前提としています。つまり、前の世代で生成されたファイルが次の世代で必要ない場合はありません(つまり、削除を保留します)そのファイルの場合)またはファイルの名前が変更されている場合。

プロセスでファイルの削除が必要になる可能性がある場合は、 Team Foundation Power Tools コマンド( tfpt )を見て、tfptオンラインコマンドのみを使用することをお勧めします変更されたファイルをチェックアウトします。不要になったファイルや削除された名前や変更された名前の削除を保留するのに十分なスマートです。

幸運を、

マーティン。

8
Martin Woodward

TFSを元に戻すと、ファイルシステムの「変更日」の値が元に戻らないことに注意してください。特に、robocopyなどのツールを使用してリモートマシンを同期する場合、これは非常にイライラします。チェックアウトを取り消した後でも、ファイルを保存して「更新日」の値を更新すると、チェックアウトを取り消した後でもその更新された値が保持されます。

5
evermeire

Tfptのuuオプション(他のほとんどの回答で推奨)に関して、最初は明確ではなかった点がいくつかあります。まず、これはコマンドtfpt uu /?でアクセスできるコマンドラインヘルプです

保留中の冗長な変更を元に戻します。保留中の変更があるアイテムの状態がサーバーと同じである場合、変更は取り消されます。

使用法:tfpt uu [/ changeset:changesetnum] [/ recursive] [/ noget] [filespec ...]

  • / changesetワークスペースを最新バージョンではなく、指定された変更セットバージョンのアイテムの状態と比較します
  • filespec ...リストされたfilespecsの冗長な変更のみをチェックします
  • / recursive指定されたファイル仕様を完全再帰で確認します
  • / nogetチェックする前にgetを実行しません

/ changesetオプションは、filespecsまたは/ recursiveでは使用できません。

次に、他の回答で推奨されているコマンドを分類します。

tfpt uu . /noget /recursive
  • tfpt uuは、「Undo Unchanged」コマンドを使用することを指定します。
  • .は、現在の作業ディレクトリをfilespecとして使用することを示します(推測します)。
  • /nogetは、変更されていないファイルを元に戻す前に「最新バージョンの取得」が呼び出されないようにします。
  • /recursiveは、filespecだけでなく、すべての再帰的な子フォルダーおよびファイルが考慮されるようにします。これはfilespecに依存しているようです-何も指定されていない場合、ワークスペース全体が処理されます。

そのため、上記のコマンドに関して、ここで注意すべきことがいくつかあります...

  • 作業ディレクトリに依存しています。
  • ワークスペース全体を処理するわけではありません。

次のコマンドが最適であることがわかりました-ワークスペース全体を処理します。

tfpt uu /noget

Tfptはそれを使用して処理するワークスペースを決定するため、作業ディレクトリに依存していることに注意してください。ただし、ワークスペース内のファイルまたはフォルダーへのパスを指定している限り、問題ありません。

4
Scott Munro

上記のRay LionFangのアプローチを見ることができます。担当者がいないのでコメントできません。ツールなどに変更を加える必要がないため、このアプローチが好きです。

  1. プロジェクトを右クリックします
  2. [チェックアウトを元に戻す]を選択して、[OK]をクリックするか、確認が残っている場合は...
  3. その後、チェックアウトの取り消し中に、実際の変更が含まれるすべてのファイルについて、プロンプトでそのファイルのチェックアウトの確認を求められます...単に「すべていいえ」をクリックします
  4. Visual Studioは、チェックアウトされたファイルに変更があるかどうかを認識します。このメソッドは、TFSからまだチェックインされていない追加ファイルも削除することに注意してください...

.......「No To All」を押すと修正されないファイルがいくつか保持されるという点で、このアプローチには問題があります。実際に修正された最初のファイルに到達するまで未修正ファイルを元に戻し、それが理にかなっている場合は残りの未修正ファイルを無視するようなことをするようです。この効果はたまにしか見たことがありません。

潜在的な回避策は上記のプロセスに従うことですが、「No To All」を押す代わりに、各ファイルで「No」を押します。作業しているファイルの数によっては時間がかかることがあるため、通常は「ALT + N」を押したままにします。変更されていないすべてのファイルを元に戻しながら、すべてのファイルを高速化します。

3
Ash