feat(git-control): add branch compare (main/uat/prod), org/single repo support
Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# 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 ""
|
||||
}
|
||||
Reference in New Issue
Block a user