TFS 2010でVisual Studio外のファイルに加えられた変更を検出するにはどうすればよいですか?


118

Team Foundation Server 2010とVisual Studio 2010を使用しています。

Visual Studioの外部でファイルを変更すると、TFSはファイルに加えられた変更を検出しないように見えるため、変更後にファイルをチェックインするオプションが提供されません。

これをどのように解決できますか?


18
SubversionまたはGit(および他の多分)は、ファイルのチェックイン/チェックアウトのためにAPIではなくファイルのハッシュを比較しています。はるかにシンプルで、はるかにリスクが少ない!
スティーブB

8
さらに悪いことに、変更されたファイルをチェックインする必要があることにTFSが気付かなかったため、同僚がチェックアウトして、コードがコンパイルまたは機能しないことに気づくまで、ファイルを忘れることがよくあります。TFSが「ステロイドのVSS」であると人々が言うのも不思議ではありません。それでも、VSSの問題の多くを抱えています。
gbjbaanb 2013

ステロイドがあなたの体を破壊するのと同じように、それはステロイドのVSSです。
Ian Kemp

回答:


48

Visual Studioの外で作業しているときにサーバーにネットワーク接続している場合は、tfコマンドラインクライアントを使用するか、Windowsエクスプローラーのシェル統合を使用して、編集する前にファイルをチェックアウトすることをお勧めします。TFS Power Toolsリリースで利用可能です。(さらに、他の多くのツールには、これを自動化するTFS統合がありますが、メモ帳だけを使用している場合でも、これは手動の手順である必要があります。)

もちろん、作業をしているときに、ファイルをチェックアウトできるネットワーク接続がない場合がよくあります。

変更したファイルがわかっている場合は、Visual Studioからチェックアウトするだけで、再びチェックインできます。

編集したファイルがわからない場合は、tfpt onlineコマンド(Power Toolsリリースの一部)を実行して変更を検出できます。これにより、ローカルで変更されたファイルが検索され、これらのファイルがサーバーからチェックアウトされます。


Visual Studioは、ファイルをチェックアウトするだけではファイルの変更を検出しないようです。私はフォルダをチェックアウトしようとしたところ、内容が編集中の保留中の変更に表示されました。次に、ファイルエクスプローラーでフォルダーを削除し、保留中の変更を更新しましたが、Visual Studioでは、保留中の変更でファイルが削除されたとは表示されませんでした。また、ファイルはまだソリューションエクスプローラーに存在していました。
カイルデラニー

160

TFSには、このための「調整」コマンドがあります。

  1. ソース管理エクスプローラーを開く
  2. 変更を含むフォルダを右クリックして、比較を選択します
  3. 調整するファイルを選択します(CTRL+ Aを押してすべてのファイルを選択します)
  4. 調整ボタンをクリックします
  5. フォルダーの違いを調整」ダイアログでオプションを設定します。確認してください保留中の変更を持っていないファイルに設定されているチェックアウトを
  6. OKをクリックします
  7. ローカルに変更がある場合は、[ チェックアウト ]ダイアログが表示されます。優先ロックタイプを設定する
  8. チェックアウトをクリックします

フォルダの違いを調整する

参照:フォルダ間の差異の調整


13
コマンドラインや危険な「保留中の変更の取り消し」が不要なため、これが最良の答えです。
NickH

4
私の日を救った!私はあなたの手順を正確に踏襲し、それは期待通りに機能しました。:-)
Gilad Barner、2015年

4
説明どおりに機能しました。最良の答えになるはずです。
ニコラス

残念ながら、プロジェクト全体でこれを実行すると、「指定されたパス、ファイル名、またはその両方が長すぎます」というエラーが表示されます。完全修飾名は260文字未満である必要があり、ディレクトリ名は248文字未満である必要があります。変更したすべてのファイルディレクトリを思い出せないため、個々のフォルダを選択することはできません。何か案が?
kraftwer1 2015

2
VS 2015 Update 3で完全に機能しました。ありがとうございました。最良の答えであるはずですが、それを機能させるためのトリッキーなコマンドはありません
ニコラ・ルッチ2016

35

これはTFS Power Toolsを使用して私にとってはうまくいきました:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(ここで、directory-nameは更新するディレクトリへのパスです。それ以外の場合は、TFSリポジトリ全体の変更を検出します)

実際に変更を加えない場合の動作を知りたい場合は、/previewスイッチを追加することで強制的に予行演習を実行できます。


先端@アダムバットキンをありがとう。チャームのように動作し、私は今直されています!+1
iOnline247 2013年

9
このコマンドラインには不要なファイルも含まれます:* .user、BIN \、objなど
Steve B

1
乾杯、私はローカルのGitリポジトリから会社のTFSの更新を自動化できるようにコマンドラインの方法を探していました。
Mark K Cowan

2
@SteveBには、/exclude:fld_name/*,filename不要なファイルを除外するために使用できるスイッチがあります。それにより、私はかなり停止しました
Kresimir Pendic

1
私はこのように実行しtfpt online /deletes /noprompt /recursive directory-name、1000個のファイルを「変更」するため、元に戻す必要があります。しかし、私はこれらに触れたことはなく、フォルダを削除しただけです。
Dzmitry Lahoda 2015

16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

私はこの回避策をブランチでテストしましたが、それは非常に役に立ちました。しかし、手動で行う必要があるのは、新しいファイルと新しいフォルダーだけです。

操作の前にブランチを作成することをお勧めします。操作の時間を隔離します。

注:この手法では、TFSが常に変更済みとしてマークするファイルと同じクリーンアップも行われます。


3
これは本当にの投稿へのコメントであり、新しい答えではありません。いずれにせよ、藻類が上記で提案したときに私が反対したのと同じ理由で、私はまだこれをしないことをお勧めします。
Edward Thomson、

完全に素晴らしい!まさに私が探していたもの(私たちの会社がTFSサーバーを移動した後、TFS / VS2010はそれに悩まされていました)。現在、編集したファイルをチェックアウトしています。ありがとう!
Mike Gledhill、2014年

これは機能しますが、MSはこれを行うためのより良い方法を提供する必要があります。優れた製品では、コマンドラインとハックは必要ありません(特にこれがVSに埋め込まれている場合)。SVNとMercurialはこれを楽しみのためにしています...
user2173353

ポイント4の代わりに、tfpt uu stackoverflow.com/a/544285/10245
Tim Abell

これはあなたがしたことを元に戻すだけです。Visual Studioにユーザーの操作を認識させません。
カイルデラニー

7

これを試して。これはある種の回避策ですが、機能します。

  1. Visual Studio外で変更を行う
  2. Visual Studioに移動し、ソース管理エクスプローラーを開きます
  3. フォルダを右クリック> 「編集のためにチェックアウト」 > 「チェックアウト」
  4. 同じフォルダを右クリック> 「保留中の変更を元に戻す...」 > 「変更を元に戻す」 >「すべていいえ

それでおしまい。変更が表示されます。


3
私はこれに反対することを本当にお勧めします-私の最大の心配は、私がこれをファットフィンガーし、すべての正当な変更を誤って元に戻すことです。さらに、すべてのファイルをチェックアウトしています。クライアントとサーバーの構成によっては、おそらく一部またはすべてのファイルがロックされ、チェックアウト時に最新の情報を取得できるため、確かに煩わしいかもしれません。
エドワードトムソン、

1
これはあなたがしたことを元に戻すだけです。Visual Studioにユーザーの操作を認識させません。
カイルデラニー

そして、そのセッションで新しいアイテムを作成または追加した場合、「ベイビーゴーン、ゴーン!
クリスチャン

4

Visual Studioの外部で変更されたファイルをTFSに把握させる別のソリューションもあります。

  1. ソリューションをオフラインで開く
  2. ソリューションエクスプローラーでソリューションファイルを選択し、[オンラインにする]ボタン(GoOnlineボタンアイコン)を押します。

この後、TFSはソリューションの変更を自動的にスキャンします。

ステップ1は、さまざまな方法で実行できます。ここに幾つかあります:

  • GoOffline Extensionを使用します -非常にシンプルで効果的です。
  • ソリューションを開くときにTFS資格情報を求められた場合(自動ドメイン認証なし)、資格情報を入力しないでください。ソリューションがオフラインで開き、[オンラインにする]ボタンを押した後にログインします
  • (極端な解決策)ネットワークケーブルを取り外します。ソリューションを開きます。ネットワークケーブルを接続します。

3

Visual Sourcesafeも同様に機能し、VSSまたはTFSに変更を通知する方法は、Visual Studio内で一度ファイルをチェックアウトすることです。


1

ソース管理を開き、TFSフォルダーに移動します。フォルダを右クリックして、「比較」を選択します。

編集したファイルが赤でマークされて表示されることに注意してください。

これは、tfpt online読み取り専用でも編集でもないファイルを取得するよりも優れていると思います。


1

インターネットがダウンしていてオフラインで作業していたときに過去にこの問題があり、変更のほとんどがチームエクスプローラーに表示されませんでした。

次の手順に従います。まず、ソリューションエクスプローラーで、調整するフォルダー(私にとっては、ソリューションフォルダー全体)を選択し、[ 比較... ]を選択しますここに画像の説明を入力してください [ フィルターの変更]をクリックし、フィルター内でテキストで-ボックスには、次のように入力できます。

*.cs;!obj\;!bin\;!packages\;

この例では、C#ファイルのみを検索に含め、bin、obj、packagesのフォルダーを除外します。

列の保留中の変更に注意してくださいは、ファイルが編集、追加などとしてマークされているか、何もマークされていないかに関する情報が含まれています。

  • 編集としてマークするには(ローカルアイテムに一致するサーバーアイテムがある場合)、ファイルを選択し、[ 編集用にチェックアウト...]を選択します
  • 追加としてマークするには(ローカルアイテムにサーバーアイテムがない場合)、ファイルを選択して[ファイルの追加]を選択します。

最後に、プロジェクトがここにリストされていない理由がわからない(* .csフィルターを削除した後も表示されない)ので、ソリューションを再構築して、プロジェクトが確実に更新されるようにします。

+ソリューションで、「オンラインにする」と表示された接続ボタン(表示された場合)をクリックします。


0

Visual Studio 2015では、プロジェクトを開いた状態で、ファイルが外部から変更されていることをVisual Studio自体が発見し、何もしなくても自動的にチェックアウトしました。通常の方法でプロジェクトをチェックインすると、外部の変更が保存されます。


0

私の場合、以下が機能しました(少なくとも私が試したとき):

  1. 保留中の変更」パネルに移動します
  2. [ 含まれる変更]または[除外された変更]で [ 表示オプション]を選択します
  3. 切り替えすべて表示ショーソリューションの変更
  4. 必要に応じて元に戻します

TFSの変更を更新

表示オプションを変更すると、変更されたファイルが強制的に更新されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.