Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@
端口转发占着(Windows 上更具体的 `127.0.0.1` 监听会盖过 agent 的 `0.0.0.0`),devctl 于是
连到了陌生人身上并永远等回复。现在两套自测**默认向系统要一个空闲端口**
(`-Port` / `--port` 仍可指定),指定的端口已被占用时立刻报错退出(退出码 2)。
- `tools/create-github-repo.ps1` 在 squash 关闭时会被 GitHub 拒掉(`no_squash_merge_strategy`,
422)——治理文件里还留着 `squash_merge_commit_message` / `squash_merge_commit_title` /
`merge_commit_title`,而 GitHub 不允许给已关闭的合并策略设置这些字段。现在只发送
**当前启用**且有值的字段,治理文件也不再保留这三项(本次对齐线上设置时就是这么被拒的)。
- `tools/create-github-repo.ps1 -DryRun` 不再改动本地仓库:`git remote add/set-url` 与
`git branch -M main` 移进了真正推送的分支——以前 dry-run 也会把**当前分支**改名成 `main`。
- `cli/devctl.ps1` 的连接没有超时(`devctl.py` 一直是 15 秒),端口不通时脚本会一直挂着。
现在两版一致:连不上或超时在 15 秒内报错退出(退出码 1),错误信息也去掉了 .NET 包装。

Expand Down
3 changes: 0 additions & 3 deletions governance/repository-settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@
"allow_rebase_merge": true,
"allow_auto_merge": false,
"delete_branch_on_merge": true,
"squash_merge_commit_message": "COMMIT_MESSAGES",
"squash_merge_commit_title": "PR_TITLE",
"merge_commit_title": "PR_TITLE",
"topics": [
"serial", "uart", "embedded", "debugging", "busybox",
"serial-console", "remote-debugging", "yocto", "devctl"
Expand Down
31 changes: 20 additions & 11 deletions tools/create-github-repo.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,20 @@ try {
$settings = Get-Content -Raw "$root\governance\repository-settings.json" | ConvertFrom-Json
$protection = Get-Content -Raw "$root\governance\branch-protection.json" | ConvertFrom-Json

# GitHub refuses the squash/merge title fields while that strategy is off
# ("no_squash_merge_strategy"), so only send the ones the enabled strategies
# can carry -- and only when the settings file still lists them.
$settingsKeys = @($settings.PSObject.Properties.Name)
$mergeFields = @{}
if ($settings.allow_squash_merge) {
foreach ($k in @('squash_merge_commit_message', 'squash_merge_commit_title')) {
if ($settingsKeys -contains $k) { $mergeFields[$k] = $settings.$k }
}
}
if ($settings.allow_merge_commit -and $settingsKeys -contains 'merge_commit_title') {
$mergeFields['merge_commit_title'] = $settings.merge_commit_title
}

# ---- 1. create repository ----
Write-Host "==> repository"
$existing = $null
Expand All @@ -116,7 +130,7 @@ try {
if ($existing) {
Write-Host " exists: $($existing.full_name) (visibility=$($existing.private))"
try {
Invoke-Gh 'PATCH' "$api/repos/$Owner/$Repo" @{
Invoke-Gh 'PATCH' "$api/repos/$Owner/$Repo" (@{
description = $settings.description
has_issues = [bool]$settings.has_issues
has_projects = [bool]$settings.has_projects
Expand All @@ -127,10 +141,7 @@ try {
allow_rebase_merge = [bool]$settings.allow_rebase_merge
allow_auto_merge = [bool]$settings.allow_auto_merge
delete_branch_on_merge = [bool]$settings.delete_branch_on_merge
squash_merge_commit_message = $settings.squash_merge_commit_message
squash_merge_commit_title = $settings.squash_merge_commit_title
merge_commit_title = $settings.merge_commit_title
} 'patch' | Out-Null
} + $mergeFields) 'patch' | Out-Null
Write-Host ' settings updated'
} catch {
Write-Host ' warn: this token cannot update repository settings (needs administration:write)'
Expand All @@ -146,14 +157,12 @@ try {
has_projects = [bool]$settings.has_projects
has_wiki = [bool]$settings.has_wiki
auto_init = $false
squash_merge_commit_message = $settings.squash_merge_commit_message
squash_merge_commit_title = $settings.squash_merge_commit_title
merge_commit_title = $settings.merge_commit_title
allow_squash_merge = [bool]$settings.allow_squash_merge
allow_merge_commit = [bool]$settings.allow_merge_commit
allow_rebase_merge = [bool]$settings.allow_rebase_merge
delete_branch_on_merge = [bool]$settings.delete_branch_on_merge
}
$body += $mergeFields
Invoke-Gh 'POST' "$api/users/$Owner/repos" $body 'create' | Out-Null
Write-Host " created $Owner/$Repo"
}
Expand All @@ -174,10 +183,10 @@ try {
# ---- 2. push ----
Write-Host "==> push"
$remoteUrl = "https://github.com/$Owner/$Repo.git"
$has = (& git remote get-url origin 2>$null)
if ($LASTEXITCODE -ne 0) { & git remote add origin $remoteUrl } else { & git remote set-url origin $remoteUrl }
& git branch -M $BaseBranch
if (-not $DryRun) {
$has = (& git remote get-url origin 2>$null)
if ($LASTEXITCODE -ne 0) { & git remote add origin $remoteUrl } else { & git remote set-url origin $remoteUrl }
& git branch -M $BaseBranch
& git -c "http.extraheader=AUTHORIZATION: basic $([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($Owner):$Token")))" `
push --quiet -u origin $BaseBranch
if ($LASTEXITCODE -ne 0) {
Expand Down
Loading