web-dev-qa-db-ja.com

特定のTFSプロジェクトサブフォルダーのすべてのラベルを見つけるにはどうすればよいですか?

サブフォルダーProject1.0を持つTFSプロジェクトtrunkがあると仮定します。 trunkには、このプロジェクトの最新バージョンのアプリケーションコードが含まれ、1.0には、同じ名前のリリースされたバージョンの同じアプリケーションのコードが含まれます。

両方のサブフォルダーにラベルがあり、すべてのラベルには、一方のサブフォルダーにのみファイルが含まれています。 [答えを単純化する場合は、サブフォルダー全体のすべてのファイルの特定の(最大)チェンジセットでラベルが再帰的であると想定することもできます。]

Visual Studio、TFS tf.exeコマンドラインツール、または公開されている(そして無料で)利用可能なその他のツールやコードを使用して、これらのサブフォルダーの1つのラベルのリストを作成するにはどうすればよいですか。

注– TFSバージョン管理データベースに直接クエリを実行してこの情報を生成するT-SQLコードを作成しましたが、「より良い」方法があるかどうか知りたいです。

19
Kenny Evitt

Visual Studioのソース管理エクスプローラーウィンドウで、関連するラベルを一覧表示するサブフォルダーを右クリックし、コンテキストメニューから履歴の表示を選択します。表示される履歴ウィンドウに、そのサブフォルダに適用されたラベルを一覧表示するサブタブラベル(以下で強調表示)があります(ただし、そのサブフォルダ)。

enter image description here

35
Kenny Evitt

今日はコマンドラインでこれを行う必要があったので、これはうまくいけば同じことを行うバッチファイルです(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
2
tinman

Visual Studioでラベルを検索するには

  1. 開くソース管理エクスプローラー

  2. ソース管理エクスプローラーで、探しているコレクション、チームプロジェクト、ブランチ、フォルダー、またはファイルのショートカットメニューを開きます。

  3. 履歴の表示を選択します。すべてのChangesetsを含む新しいウィンドウが表示されます。

  4. 下の画像で強調表示されているように、タブメニューでラベルを選択します。

enter image description here

2
Sundeep