msquic/scripts/sync-mirror.ps1

70 строки
1.5 KiB
PowerShell

<#
.SYNOPSIS
This synchronizes a branch or tag on the current repository to the mirror repo.
.EXAMPLE
sync-mirror.ps1
.EXAMPLE
sync-mirror.ps1 -Source refs/heads/release/1.0.0
.EXAMPLE
sync-mirror.ps1 -Source refs/tags/v1.0.0
#>
param (
[Parameter(Mandatory = $false)]
[string]$Source = "refs/heads/main"
)
Set-StrictMode -Version 'Latest'
$PSDefaultParameterValues['*:ErrorAction'] = 'Stop'
# Verify the PAT environmental variable is set.
if ($null -eq $Env:AzDO_PAT -or "" -eq $Env:AzDO_PAT) {
Write-Error "PAT for Azure DevOps Repo doesn't exist!"
}
# Add the AzDO repo as a remote.
git remote add azdo-mirror "https://nibanks:$Env:AzDO_PAT@mscodehub.visualstudio.com/msquic/_git/msquic"
$SourceName = "" # The name of the branch or tag
if ($Source.StartsWith("refs/heads/")) {
# Remove the 'refs/heads/' prefix.
$SourceName = $Source.Substring(11)
# Make sure we're in the correct branch.
git checkout $SourceName
# Reset branch to origin.
git reset --hard origin/$SourceName
} elseif ($Source.StartsWith("refs/tags/")) {
# Remove the 'refs/tags/' prefix.
$SourceName = $Source.Substring(10)
# Make sure we're in the correct tag.
git checkout $SourceName
} else {
Write-Error "Unsupported source: " + $Source
}
# Some extra info for debugging failures.
git log -5
git status
# Push to the AzDO repo.
try {
git push azdo-mirror $SourceName
} catch {
Write-Host "Supressing exception while running 'git push'"
}
Write-Host "Successfully mirrored latest changes"