【问题标题】:How to monitor a TFVC branch for folder addition?如何监视 TFVC 分支以添加文件夹?
【发布时间】:2018-07-09 21:38:14
【问题描述】:

我正在寻找可以让我知道是否直接在我的 TFVC 分支下添加了新文件夹的内容。我尝试使用 tf 客户端,但虽然我可以获取变更集并获取历史记录,但我找不到我要查找的内容。

我想要的是,假设有一个 TFS 分支 TestBranch 我的脚本将定期轮询该分支,如果直接在该分支下添加了新文件夹,则返回文件夹名称(应忽略子文件夹) .

是否有任何 tf 命令用于此?或者我应该如何尝试达到我想要的结果?

注意:我们使用的是 TFS 2015。我还尝试查看 TFS 服务挂钩,因此我不必轮询分支,但创建服务挂钩需要我没有的管理员访问权限。

【问题讨论】:

  • 您希望通过这样做来实现什么目标?
  • @DanielMann 我们的项目是结构化的,例如在 TFS 分支下直接签入的任何文件夹都是一个项目。 Jenkins 用于自动构建和部署项目。问题是对于添加到 TFS 分支的每个新项目,我必须为此在 Jenkins 中手动创建一个作业。我想要一个脚本来检查是否已将文件夹添加到 TFS 并使用 Jenkins Job DSL 自动创建 jenkins 作业。

标签: tfs tfvc tf-cli


【解决方案1】:

没有这样的内置触发器来实现这一点。

但是您可以尝试列出特定分支目录下的文件夹(本地工作区,每次都需要先获取最新版本)并将列表输出到文本文件,然后比较文本文件并定期/及时输出差异根据您的要求根据需要。

您可以尝试以下 PowerShell 脚本示例来实现: (第一次运行脚本会报“get-content : Could not find a part of the path 'C:\LC\temp\'”等错误,忽略即可,第二次开始运行。)


#Create a folder to store the output text files first, "C:\LC\temp" for example here.
$TempFolder = "C:\LC\temp"

$LocalBranchFolder = "C:\Workspaces\0418Scrum\WorkItemComments" #the path of the branch in local workspace.

$filename = (Get-Date).ToString("yyyyMMdd-HHmmss") + "_" + "FolderList"

$OldFileName = Get-ChildItem -Path $TempFolder | Select-Object -Last 1
$OldFile = "$TempFolder\$OldFileName" 
$NewFile = "$TempFolder\$filename.txt"

write-host $OldFile

#List all the folders under the specific branch (branch folder in local workspace)
Get-ChildItem -Path $LocalBranchFolder –Directory  | Out-File -FilePath $NewFile -Width 200

#Compare the folder lists and output the differents (New added folder)
compare-object (get-content $OldFile) (get-content $NewFile) | format-list

【讨论】:

    猜你喜欢
    • 2018-11-26
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 2016-07-02
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多