サブフォルダーProject
と1.0
を持つTFSプロジェクトtrunk
があると仮定します。 trunk
には、このプロジェクトの最新バージョンのアプリケーションコードが含まれ、1.0
には、同じ名前のリリースされたバージョンの同じアプリケーションのコードが含まれます。
両方のサブフォルダーにラベルがあり、すべてのラベルには、一方のサブフォルダーにのみファイルが含まれています。 [答えを単純化する場合は、サブフォルダー全体のすべてのファイルの特定の(最大)チェンジセットでラベルが再帰的であると想定することもできます。]
Visual Studio、TFS tf.exe
コマンドラインツール、または公開されている(そして無料で)利用可能なその他のツールやコードを使用して、これらのサブフォルダーの1つのラベルのリストを作成するにはどうすればよいですか。
注– TFSバージョン管理データベースに直接クエリを実行してこの情報を生成するT-SQLコードを作成しましたが、「より良い」方法があるかどうか知りたいです。
Visual Studioのソース管理エクスプローラーウィンドウで、関連するラベルを一覧表示するサブフォルダーを右クリックし、コンテキストメニューから履歴の表示を選択します。表示される履歴ウィンドウに、そのサブフォルダに適用されたラベルを一覧表示するサブタブラベル(以下で強調表示)があります(ただし、そのサブフォルダ)。
今日はコマンドラインでこれを行う必要があったので、これはうまくいけば同じことを行うバッチファイルです(TFSの使用を開始したばかりで、OPの要件をテストするためにフォルダーのラベルが制限されています)。
設定が何であれ、コレクションパラメータをtf
に編集する必要があります。また、認証の方法によっては、ログインの詳細を提供する必要があります。
@ECHO OFF
SETLOCAL EnableDelayedExpansion
@REM Check required parameters
IF [%1]==[] GOTO :usage
tf labels /owner:* /format:detailed %2 /collection:http://server:8080/tfs/collection > labels.txt 2> nul
SET CURRENT_LABEL=
FOR /F "tokens=1,2,3" %%G IN (labels.txt) DO (
IF [%%G]==[Label] (
SET CURRENT_LABEL=%%I
) ELSE (
IF /I [%%H]==[%1] (
ECHO !CURRENT_LABEL!
)
)
)
DEL labels.txt
GOTO :eof
@REM Subroutines
:usage
echo tfs_labelsforfolder - Display all labels that are applied to a folder.
echo.
echo tfs_labelsforfolder ^<folder^> ^[label_filter^]
echo.
echo folder - The folder to show the labels for, e.g. $/Project/folder
echo label_filter - Search pattern to use in tf labels command.
echo.
GOTO :eof
Visual Studioでラベルを検索するには
開くソース管理エクスプローラー。
ソース管理エクスプローラーで、探しているコレクション、チームプロジェクト、ブランチ、フォルダー、またはファイルのショートカットメニューを開きます。
履歴の表示を選択します。すべてのChangesetsを含む新しいウィンドウが表示されます。
下の画像で強調表示されているように、タブメニューでラベルを選択します。