#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 объединенной ветви вы можете щелкнуть правой кнопкой мыши набор изменений и выбрать опцию Отслеживания набора изменений, а затем выбрать исходную ветвь объединенная ветвь на следующем экране