从合并获取变更集ID

时间:2019-04-24 13:45:36

标签: tfs azure-devops tfvc

在TFVC中,您可以将分支A中的变更集合并到分支B中。是否可以查看分支A中的哪些变更集(尤其是哪些ID)合并到分支B中?

3 个答案:

答案 0 :(得分:1)

您可以使用以下脚本:

$tfsUrl = "http://{Server}:{Port}/{Organization}/{Collection}"
$destinationBranchPath = "$/..."
$sourceBranchPath = "$/..."

# Change top with count of changesets you want to check
$body = 'repositoryId=&searchCriteria={"itemPath":"'+ $destinationBranchPath+'","itemVersion":"T","top":50}'
#Get top X changesets under destinationBranchPath
$changeSets  = (Invoke-RestMethod -Method post   "$tfsUrl/{Project}/_api/_versioncontrol/history?__v=5" -Body $body -UseDefaultCredentials).results 

#Run over all changesets and check if sourceBranchPath is part of merage soruce path 
foreach($changeSet in $changeSets)
{
   $IsMerged = (Invoke-RestMethod -Method Get  "$tfsUrl/_apis/tfvc/changesets/$($changeSet.changeList.changesetId)/changes" -UseDefaultCredentials).value.mergeSources.serverItem -like "*$sourceBranchPath*"
   if($IsMerged)
   {
        #Print results 
        Write-Output $changeSet.changeList
   }
}

答案 1 :(得分:0)

使用tf.exe命令行工具,merges命令可以提供两个分支之间的合并历史记录。

因此,在我的示例中,从本地计算机上的源代码控制根文件夹中,我可以在自己选择的tf vc merges a b /recursive的外壳中运行以下命令,以获取来自a的变更集的列表包含到b的合并中:

Changeset Merged in Changeset Author                           Date
--------- ------------------- -------------------------------- ----------
   20096                20292 Joey Bloggs                      30/04/2018
   20102                20292 Joey Bloggs                      30/04/2018
   20103                20292 Joey Bloggs                      30/04/2018

第一列包含分支a中的变更集,第二列包含将其合并到分支b中的变更集。

为使此工作正常进行,我必须将tf.exe的文件夹位置添加到我的PATH变量中。

答案 2 :(得分:0)

只需为不想使用命令的任何人添加另一种解决方案,但是如果您想了解多个合并,则将花费更多时间

在合并分支的TFS历史记录上,可以右键单击一个变更集并选择“跟踪变更集”选项,然后在下一个屏幕中选择“原始分支+合并分支”

https://docs.microsoft.com/en-us/azure/devops/repos/tfvc/view-where-when-changesets-have-been-merged?view=azure-devops