Question

Assume there is a TFS project Project with the subfolders trunk and 1.0. trunk contains the latest version of the application code for this project and 1.0 contains the code for the same application for the released version of the same name.

There are labels for both sub-folders and all of the labels include files in only one of the sub-folders. [You could also assume that the labels are recursive on a specific (maximum) changeset for all of the files in the entire sub-folder too if that simplifies your answer.]

How can I create a list of labels for one of these sub-folders, using Visual Studio, the TFS tf.exe command line tool, or any other tool or code that is publicly (and freely) available.

Note – I've written T-SQL code that queries the TFS version control database directly to generate this info, but I'm curious whether there are 'better' ways to do so.

Was it helpful?

Solution

In Visual Studio, in the Source Control Explorer window, right-click the sub-folder for which you want to list the relevant labels and pick View History from the context menu. In the History window that should appear, there should be a sub-tab Labels (as highlighted below) that lists labels applied to that sub-folder (but not specific items in that sub-folder).

enter image description here

OTHER TIPS

To find labels in Visual Studio

  1. Open Source Control Explorer.

  2. In Source Control Explorer, open the shortcut menu for the collection, team project, branch, folder, or file that you are looking for.

  3. Select View History. You will see a new window with all the Changesets.

  4. Select Labels in the tab menu as highlighted in the below image.

enter image description here

I needed to do this on the command line today so here is a batch file that hopefully does the same thing (we've only just started using TFS and have limited labels on folders to test the OP's requirements).

You'll need to edit the collection parameter to tf to whatever your setup is, and possibly provide the login details depending on how your authentication is done.

@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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top