Связывание запросов на получение с рабочими элементами из базы данных TFS - PullRequest
0 голосов
/ 29 октября 2018

Мы используем пользовательские запросы (к базам данных TFS: Tfs_DefaultCollection и Tfs_Warehouse), чтобы проверить, все ли наборы изменений связаны с рабочим элементом. Мы используем таблицу FactWorkItemChangeset из базы данных Tfs_Warehouse. В настоящее время мы переходим на TFS Git и хотим обновить наши пользовательские запросы, чтобы проверить, не связаны ли все запросы на получение с рабочим элементом. Например:
Git pull request и его рабочий элемент Мы не знаем, где в базе данных Tfs_Warehouse или в базе данных Tfs_Defaultcollection запрос на извлечение связан с рабочим элементом. Кто-нибудь знает, где хранится эта ссылка?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Мы наконец нашли ссылку в файле de Tfs_DefaultCollection.WorkItemFiles! Например: выберите * из [dbo]. [WorkItemFiles] где FilePath = 'vstfs: /// Git / PullRequestId / 4f39e226-6f44-4e56-a216-f45969d8147d% 2fab3368e0-56ef-468f-8e14-43065c433a21% 2f2619'

Это дает этот результат: ID 427787 FilePath vstfs: /// Git / PullRequestId / 4f39e226-6f44-4e56-a216-f45969d8147d% 2fab3368e0-56ef-468f-8e14-43065c433a21% 2f2619

Столбец ID содержит идентификатор рабочего элемента и хэши FilePath 2 (разделенные «% ef») и, наконец, идентификатор запроса на извлечение. В этом примере workitem 427787 связан с запросом Pull 2619.

0 голосов
/ 30 октября 2018

Невозможно найти связанную таблицу, однако вы можете использовать API REST, чтобы проверить, все ли запросы на получение связаны с рабочим элементом. См. Получение запросов на извлечение по проекту и Рабочие элементы запроса на извлечение - список для получения подробной информации.

Например, ниже сценарий PowerShell извлекает все запросы на извлечение из определенного проекта и перечисляет связанные рабочие элементы для каждого из них, а также выводит запросы на извлечение, у которых нет связанных рабочих элементов, в файл *.csv ("D:\temp\1030.csv" в приведенном ниже примере).

Param(
   [string]$collectionurl = "http://172.17.16.163:8080/tfs/DefaultCollection", 
   [string]$project = "GitTest",
   [string]$user = "Domain\user",
   [string]$token = "password"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

#Get pull request list for a specific project
$prsurl = "$collectionurl/$project/_apis/git/pullrequests?api-version=2.0"
$prs = (Invoke-RestMethod -Uri $prsurl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
$prurls = $prs.value.url

#Get the associated work items to PRs
Clear-Host

foreach ($prurl in $prurls)
{
$baseurl = "$prurl/workitems"

$prwis = Invoke-RestMethod -Uri $baseurl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

write-host "Pull Reuquest:" $prurl

write-host "Count of Associated Work Items:"$prwis.count 
 foreach ($prwi in $prwis.value )
  {
   Write-Host "Associated workitem:"$prwi.id - $prwi.url
  }
  write-host `n

if ($prwis.count -lt 1)
 {
  #Write-host $prurl
  # Output the Pull Requests which have no work items associated:
  $prurl | Add-Content "D:\temp\1030.csv"  
 }
}

enter image description here

...