Branches/Get-BaseBranchForBranch.ps1
function Get-BaseBranchForBranch() { Param( [Parameter(Mandatory=$true)] [string]$BranchPath ) #check if there is an extension file which specifies the base branch before reading COD1 $BaseBranch = Get-BaseBranchFromExtensionFile -BranchPath $BranchPath if (($BaseBranch -ne '') -and ($BaseBranch -ne $null)) { return $BaseBranch } $TempFile = Join-Path (Create-TempDirectory) 'COD1.TXT' Get-ObjectsFromTFSBranch -BranchPath (Join-Path $BranchPath 'COD1.TXT') -DestinationPath $TempFile -Type File $VersionList = Get-VersionList $TempFile if ($VersionList.Contains(',')) { $VersionList = $VersionList.Substring(0,$VersionList.IndexOf(',')) } $BaseBranches = @() if ($VersionList.Substring(0,5) -eq 'NAVW1') { $MajorVersion = $VersionList.Substring(5,$VersionList.IndexOf('.',5) - 5) $Build = $VersionList.Substring($VersionList.LastIndexOf('.') + 1) if ($Build -eq '00') { $Build = 'RTM' } $LikeExpression = '$/NAV - Base Versions*{0}*{1}' -f (Get-VersionNoFromMajorBuild $MajorVersion), $Build $BaseBranches = Get-TFSBranches | Where-Object {$_ -like ($LikeExpression)} if (Get-BranchIsGBLocalised $BranchPath) { $BaseBranches = $BaseBranches | Where-Object {$_ -notlike '*W1*'} } else { $BaseBranches = $BaseBranches | Where-Object {$_ -like '*W1*'} } } if ($BaseBranches.Count -eq 1) { return $BaseBranches } else { throw ('Could not find a base branch for branch {0}, version list {1}' -f $BranchPath, $VersionList) } } function Get-BranchIsGBLocalised { Param( [Parameter(Mandatory=$true)] [string]$BranchPath ) $TempFile = (Join-Path (Create-TempDirectory) 'TAB10500.TXT') Get-ObjectsFromTFSBranch -BranchPath (Join-Path $BranchPath 'TAB10500.TXT') -DestinationPath $TempFile -Type File $Result = Test-Path -Path $TempFile if ($Result) { Remove-Item (Split-Path $TempFile -Parent) -Recurse -Force } $Result } function Get-VersionNoFromMajorBuild { Param( [Parameter(Mandatory=$true)] [string]$MajorVersion ) switch ($MajorVersion) { '8' {'2015'} '9' {'2016'} '10' {'2017'} '11' {'2018'} } } function Get-BaseBranchFromExtensionFile() { Param( [Parameter(Mandatory=$true)] [string]$BranchPath ) $ExtensionPath = Join-Path $BranchPath 'Extension' $LocalExtensionPath = (Join-Path (Create-TempDirectory) 'extension.xml') Get-ObjectsFromTFSBranch -BranchPath (Join-Path $ExtensionPath 'extension.xml') -DestinationPath $LocalExtensionPath -Type File if (!(Test-Path $LocalExtensionPath)) { return '' } [xml]$ExtensionConfig = Get-Content $LocalExtensionPath return $ExtensionConfig.SelectSingleNode('extension/base').InnerText } Export-ModuleMember -Function Get-BaseBranchForBranch |