2016-09-06 2 views
-1

Необходимо получить список филиалов под коллекцией проекта Team или Team Project, который необходим для написания в каком-либо файле txt или csv. Я использую TFS 2015.Как получить список филиалов в рамках проекта TFS программно?

Есть ли некоторые скрипты? Предпочтительно сценарий Powershell

Спасибо, Advance, Dinesh.

ответ

2

Оба API REST и API-интерфейс клиента могут достичь того, что вам нужно. Вы также можете использовать их в сценарии Powershell.

Использование Rest API - Get a branch

GET https://{instance}/DefaultCollection/_apis/tfvc/branches/{path}?api-version={version}[&includeChildren={bool}&includeParent={bool}&includeDeleted={bool}] 

Использование Client API

Использование Powershell с C#

# Define parameters 
$tfsCollectionUrl = New-Object System.URI("http://ditfs.cloudapp.net:8080/tfs/disample"); 

# Load Client Assembly 
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”); 
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.VersionControl.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”); 
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”); 
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Lab.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”); 
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Lab.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”); 

# Connect to tfs 
$tfsCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsCollectionUrl); 
$projectService = $tfsCollection.GetService([Microsoft.TeamFoundation.Server.ICommonStructureService]); 
$versionControl = $tfsCollection.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]); 

# Query all the projects and branches 
$projects = $projectService.ListAllProjects(); 
$objallbranch = $versionControl.QueryRootBranchObjects("full") 

foreach ($project in $projects) 
{ 
    Write-Host Finding environments for project $project.Name 
    foreach ($branchObject in $objallbranch) 
       { 
        if ($branchObject.Properties.RootItem.Item.ToUpper().Contains($project.Name.ToUpper())) 
        { 
         write-host $branchObject 
        } 
        } 

} 

Source code от GitHub

Смежные вопросы