# Compare branches across all repos in an org - detect unmerged commits # -CompareSet full: main vs uat, main vs prod, uat vs prod for each repo param( [string]$Org = "G3SF", [string]$Repo, [string]$BaseBranch = "main", [string]$HeadBranch = "prod", [ValidateSet("single", "full")] [string]$CompareSet = "full", [string]$WorkspaceRoot = "d:\AFE Git\G3SF\G3FO\server", [switch]$UseApi, [string]$SinceTag, [string]$SinceDate ) $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $CompareScript = Join-Path $ScriptDir "branch_compare.ps1" $ListScript = Join-Path $ScriptDir "list_orgs_repos.ps1" $repos = if ($Repo) { @($Repo) } else { @(& $ListScript -Action list-repos -Org $Org) } $hasLocal = Test-Path $WorkspaceRoot foreach ($r in $repos) { if (-not $r) { continue } $path = Join-Path $WorkspaceRoot $r Write-Host "########## $Org/$r ##########" -ForegroundColor Magenta if ($UseApi -or (-not $hasLocal) -or (-not (Test-Path $path))) { $params = @{ Owner = $Org; Repo = $r; BaseBranch = $BaseBranch; HeadBranch = $HeadBranch; CompareSet = $CompareSet } & $CompareScript @params } else { $params = @{ RepoPath = $path; BaseBranch = $BaseBranch; HeadBranch = $HeadBranch; CompareSet = $CompareSet } if ($SinceTag) { $params.SinceTag = $SinceTag } if ($SinceDate) { $params.SinceDate = $SinceDate } & $CompareScript @params } Write-Host "" }