Получение идентификаторов наборов изменений из слияния

#tfs #azure-devops #tfvc

#tfs #azure-devops #tfvc

Вопрос:

В TFVC вы можете объединить наборы изменений из ветки A в ветку B. Возможно ли просмотреть, какие наборы изменений — в частности, какие идентификаторы — из ветви A были объединены в ветку B?

Ответ №1:

Вы можете использовать следующий скрипт :

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

# Change top with count of changesets you want to check
$body = 'repositoryId=amp;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. Спасибо, Амит. Вы запускаете это из окна PowerShell или мне нужно использовать оболочку TFS?

2. Я предпочитаю использовать оболочку poweshell.

Ответ №2:

Используя инструмент 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 переменную.

Комментарии:

1. В то время как tf.exe это хорошее и чистое решение. для этого все еще требуется установленная Visual Studio. вот почему я предпочитаю работать с TFS API.

2. Вы можете скачать tf.exe отдельно от Visual Studio здесь blogs.msdn.microsoft.com/bharry/2017/04/05 /…

3. Тем не менее, для этого требуется установка, это только я. если вы находите этот способ более простым и чистым.используйте его 🙂

Ответ №3:

Просто добавляю другое решение для тех, кто не хочет использовать команды, но это займет немного больше времени, если вы хотите знать более одного слияния

В истории TFS объединенной ветви вы можете щелкнуть правой кнопкой мыши набор изменений и выбрать опцию Отслеживания набора изменений, а затем выбрать исходную ветвь объединенная ветвь на следующем экране

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