TFSのワークスペースで現在のチェンジセットIDを取得します


80

ローカルワークスペースに現在あるチェンジセットを確認するにはどうすればよいですか?

確かに、1つのファイルを選択して、その履歴を表示できます。ただし、そのファイルが最近更新されていない場合、その変更セットは、同じソリューションで最近更新されたファイルよりも古い可能性があります。

考えられる間違いの1つは、ソリューションファイルの履歴を表示することですが、新しいプロジェクトを追加したり、ソリューションレベルの変更を加えたりしない限り、ソリューションファイルが変更されることはめったにありません。

最後に、変更セットを理解するために、変更された最新のファイルを覚えて、それらの履歴を表示する必要があります。

これを行うためのより良い方法はありますか?


なぜ現在のチェンジセットを知りたいのですか?
Ewald Hofman 2011年

ワークスペースがチェンジセットを表していない場合はどうなりますか?あなたがいることを考えてみて$/Aマッピングされ、あなたはチェンジセットAを取得してきた、とあなたがしている$/Bマップされた、とあなたはチェンジがでワークスペースは何チェンジBを取得しましたか?
エドワードトムソン

8
@Ewaldバグが発生し始めた時期を見つけるために、時間を遡ることを検討してください。これには、ワークスペースで「特定のバージョンを取得」操作を複数回実行して、非常に面倒で時間がかかり、エラーが発生しやすい以前の変更セットに到達する必要がある場合があります。どの正確なチェンジセットが現在ワークスペースにあるかを知ることができることは、気を散らすエラーを回避し、原因を確認するのに非常に役立ちます。今日そのコマンドを見つけてよかったです。
Louis

1
私はこの質問を賞賛します!
フェルナンドエスピノサ2014

5年以上後へようこそ。@EwaldHofmanの質問に答えるために、私のシナリオでは、ワークスペースにいくつかの変更を加えました。最後の「get」を実行してからサーバーで何が変更されたかを確認したいと思います。私の場合、最後に「取得した」バージョンがわかりません。
JMD 2017年

回答:



4

tf.exe history . /r直接使用する一般的な答えは機能しますが、ひどく遅くなる可能性があります。私たちの場合、10〜15秒かかります。現在、2段階のチェックを使用しています。最初に、いくつかの任意のファイルのリビジョンをチェックします(ルートフォルダー内のファイルを使用しています)。

PowerShellの場合:

$tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe"
$localpath = "C:\some\tfs\directory"

$result = & $tfexepath history $localpath /noprompt /stopafter:1 /version:W 
"$result" -match "\d+" | out-null
$id = $matches[0]

次に、/ rフラグを使用してルートから検索ますが、検索を上記のリビジョンから開始するように制限します

$result2 = & $tfexepath history $localpath /r /noprompt /stopafter:1 /version:$id~W        
"$result2" -match "\d+" | out-null
$id2 =  $matches[0]

#result:
Write-Host $id2 

コードベースの場合、これにより合計時間が10〜15秒から1.4〜1.5秒に短縮されます。

私が理解している限り、欠点や制限はありませんが、小さなリポジトリでは遅くなる可能性があると思います。-知ってよかったです。


1
優れた代替手段。ランタイムを55秒から1.5秒に短縮しました。ありがとう!
bobroxsox 2018

1
....振り返ってみると-私がmsvcと一緒に暮らすことができたことに驚き、それが過去にのみ対処しなければならなかったことを嬉しく思います。
ヨハン・ランドバーグ

3

Visual Studio CMD(私の場合、VS2015の場合は「VS2015の開発者コマンドプロンプト」と呼ばれます)を実行してから、プロジェクトフォルダーに移動し、次のコマンドを実行します。

tf history . /r /noprompt /stopafter:1 /version:W

2
ありがとうございました!その答えがなければ、VisualStudioの[コマンドウィンドウ]ペインでコマンドが機能しないのはなぜだろうと思いました。
ojdo

1

あなたはPowerShellを使用したい場合は(も参照;で答えることは同等@kroonwijk):

  1. tfsスナップインを有効にします(まだの場合は1回)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. tfsコマンドレットを使用して、現在の変更セットIDを取得します

    Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W


0

使用しているバージョンが本当にわからない場合は、他の推奨される方法のいずれかを使用する必要があります。特定のバージョンがあるかどうかわからない場合、またはいくつかの変更セット間で不明であり、VS TFS GUIから作業することを好む場合は、次の手順を実行できません。

  1. 確実にしたい変更セットを選択して、比較します。 ここに画像の説明を入力してください
  2. 違いがない場合: ここに画像の説明を入力してください

    または、異なるファイルが保留中の変更があるファイルのみである場合: ここに画像の説明を入力してください

これは、問題のバージョンが最新であることを意味します。

  1. **保留中の変更があるファイルも実際に最新ではないかどうかわからない場合は、プロパティを使用してそのファイルのバージョンを確認できます。 ここに画像の説明を入力してください
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.