Add sync agent instructions script
This commit is contained in:
@@ -0,0 +1,79 @@
|
|||||||
|
param(
|
||||||
|
[string]$Remote = "gitea",
|
||||||
|
[string]$MainBranch = "main"
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
# Verify remote exists.
|
||||||
|
$remotes = git remote
|
||||||
|
if ($remotes -notcontains $Remote) {
|
||||||
|
throw "Git remote '$Remote' does not exist. Available remotes: $($remotes -join ', ')"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Using remote: $Remote"
|
||||||
|
Write-Host "Canonical branch: $MainBranch"
|
||||||
|
|
||||||
|
# Update remote references.
|
||||||
|
git fetch $Remote --prune
|
||||||
|
|
||||||
|
# Update local main from the selected remote.
|
||||||
|
git switch $MainBranch
|
||||||
|
git pull --ff-only $Remote $MainBranch
|
||||||
|
|
||||||
|
# Get all branches on this specific remote.
|
||||||
|
$remotePrefix = "$Remote/"
|
||||||
|
|
||||||
|
$branches = git for-each-ref `
|
||||||
|
--format="%(refname:short)" `
|
||||||
|
"refs/remotes/$Remote" |
|
||||||
|
Where-Object {
|
||||||
|
$_ -ne "$Remote/$MainBranch" -and
|
||||||
|
$_ -ne "$Remote/HEAD"
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($remoteBranch in $branches) {
|
||||||
|
# Remove "<remote>/" prefix while preserving branch names such as
|
||||||
|
# agent/foo/bar.
|
||||||
|
$branch = $remoteBranch.Substring($remotePrefix.Length)
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Updating $branch..."
|
||||||
|
|
||||||
|
# Check whether the local branch already exists.
|
||||||
|
git show-ref --verify --quiet "refs/heads/$branch"
|
||||||
|
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
git switch $branch
|
||||||
|
|
||||||
|
# Make sure the local branch reflects the latest remote branch
|
||||||
|
# before modifying the instruction files.
|
||||||
|
git pull --ff-only $Remote $branch
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
git switch --track -c $branch "$Remote/$branch"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Force these files to exactly match canonical main.
|
||||||
|
git restore `
|
||||||
|
--source "$MainBranch" `
|
||||||
|
-- AGENTS.md PROJECT_GOAL.md
|
||||||
|
|
||||||
|
git add AGENTS.md PROJECT_GOAL.md
|
||||||
|
|
||||||
|
# Commit only when one of the files actually changed.
|
||||||
|
git diff --cached --quiet
|
||||||
|
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
git commit -m "Sync agent instructions from $MainBranch"
|
||||||
|
git push $Remote $branch
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host "Already up to date."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
git switch $MainBranch
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Finished synchronizing AGENTS.md and PROJECT_GOAL.md."
|
||||||
Reference in New Issue
Block a user