19

假设有一个 TFS 项目Project,其中包含子文件夹trunk1.0. trunk包含此项目的最新版本的应用程序代码,并1.0包含同名已发布版本的相同应用程序的代码。

两个子文件夹都有标签,所有标签都包含仅其中一个子文件夹中的文件。[您还可以假设标签在整个子文件夹中的所有文件的特定(最大)变更集上是递归的,如果这样可以简化您的答案。]

如何使用 Visual Studio、TFStf.exe命令行工具或任何其他公开(且免费)可用的工具或代码为这些子文件夹之一创建标签列表。

注意 – 我编写了 T-SQL 代码,直接查询 TFS 版本控制数据库以生成此信息,但我很好奇是否有“更好”的方法可以这样做。

4

3 回答 3

38

在 Visual Studio 的“源代码管理资源管理器”窗口中,右键单击要为其列出相关标签的子文件夹,然后从上下文菜单中选择“查看历史记录”。在应出现的“历史记录”窗口中,应该有一个子选项卡标签(如下所示),其中列出了应用于该子文件夹的标签(但不是该子文件夹中的特定项目)。

在此处输入图像描述

于 2012-04-04T18:26:40.050 回答
2

在 Visual Studio 中查找标签

  1. 打开源代码管理资源管理器

  2. Source Control Explorer中,打开您要查找的集合、团队项目、分支、文件夹或文件的快捷菜单

  3. 选择查看历史记录。您将看到一个包含所有Changesets的新窗口。

  4. 在选项卡菜单中选择标签,如下图所示。

在此处输入图像描述

于 2015-02-04T18:35:31.960 回答
2

我今天需要在命令行上执行此操作,所以这里有一个批处理文件,希望能做同样的事情(我们才刚刚开始使用 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
于 2015-10-01T15:21:29.407 回答