从合并中获取变更集 ID
Get Changeset Id(s) from Merge
在 TFVC 中,您可以将分支 A 中的变更集合并到分支 B 中。是否可以查看分支 A 中的哪些变更集(特别是哪些 ID)已合并到分支 B 中?
您可以使用以下脚本:
$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
}
}
使用tf.exe
命令行工具,merges命令可以提供两个分支之间的合并历史。
因此,在我的示例中,从本地计算机上的源代码管理根文件夹中,我可以 运行 在我选择的 shell 中使用以下命令 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
变量中。
只是为不想使用命令的人添加另一种解决方案,但如果您想了解不止一个合并,这将更耗时
在合并分支的 TFS 历史上,您可以右键单击变更集并选择“跟踪变更集”选项,然后在下一个屏幕中select原始分支+合并分支
在 TFVC 中,您可以将分支 A 中的变更集合并到分支 B 中。是否可以查看分支 A 中的哪些变更集(特别是哪些 ID)已合并到分支 B 中?
您可以使用以下脚本:
$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
}
}
使用tf.exe
命令行工具,merges命令可以提供两个分支之间的合并历史。
因此,在我的示例中,从本地计算机上的源代码管理根文件夹中,我可以 运行 在我选择的 shell 中使用以下命令 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
变量中。
只是为不想使用命令的人添加另一种解决方案,但如果您想了解不止一个合并,这将更耗时
在合并分支的 TFS 历史上,您可以右键单击变更集并选择“跟踪变更集”选项,然后在下一个屏幕中select原始分支+合并分支