假设有一个包含子文件夹Project
和trunk
的TFS项目1.0
。 trunk
包含此项目的应用程序代码的最新版本,1.0
包含同一发布版本的同一应用程序的代码。
两个子文件夹都有标签,所有标签只包含一个子文件夹中的文件。 [你也可以假设标签在整个子文件夹中的所有文件的特定(最大)变更集上递归,如果这简化了你的答案。]
如何使用Visual Studio,TFS tf.exe
命令行工具或公开(并且自由)可用的任何其他工具或代码,为其中一个子文件夹创建标签列表。< / p>
注意 - 我编写了T-SQL代码,直接查询TFS版本控制数据库以生成此信息,但我很好奇是否有“更好”的方法。
答案 0 :(得分:34)
在Visual Studio中,在源代码管理资源管理器窗口中,右键单击要列出相关标签的子文件夹,然后从中选择查看历史记录上下文菜单。在应该出现的历史窗口中,应该有一个子选项卡标签(如下所示),其中列出了应用于该子文件夹的标签(但不是特定的项目)那个子文件夹)。
答案 1 :(得分:2)
在Visual Studio中查找标签
打开源代码管理资源管理器。
在源代码管理资源管理器中,打开您要查找的集合,团队项目,分支,文件夹或文件的快捷菜单。
选择查看历史记录。您将看到一个包含所有更改集的新窗口。
在标签菜单中选择标签,如下图所示。
答案 2 :(得分:2)
我今天需要在命令行上执行此操作,所以这里有一个批处理文件,希望它能做同样的事情(我们只是刚开始使用TFS并且文件夹上的标签有限以测试OP&#39; s要求)。
您需要将收集参数编辑为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