refactor: master 沿用 release 轨道名,develop 用 develop,feature 用 feature
上一版把 master 的轨道也改名成 master,会把历史构建号搬到新键上。 改为 master/main 继续用现有的 release 轨(build_map 原地保留), 只有 develop 等其它上架分支新建以分支名命名的轨道并复制一份构建号。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BJaZ913U5GVdTkYHiRpvDU
This commit is contained in:
+21
-19
@@ -93,16 +93,18 @@ DEFAULT_SERVERS = {
|
||||
|
||||
DEFAULT_APP_VER = "2.180.0"
|
||||
|
||||
# 版本轨道:每个上架分支(master / develop / release-* 等)各有一条独立轨道,
|
||||
# 轨道名即分支名,App_Store 打包时构建号自增;所有自测分支共用一条 feature 轨,
|
||||
# 构建号永不自增。各轨道的 App_Ver 互不影响。
|
||||
# 版本轨道:每个上架分支各有一条独立轨道,App_Store 打包时构建号自增;
|
||||
# 所有自测分支共用一条 feature 轨,构建号永不自增。各轨道的 App_Ver 互不影响。
|
||||
# 轨道名:master/main 沿用历史名称 release,其余上架分支以分支名命名(develop、hotfix-x…)。
|
||||
KIND_RELEASE = "release"
|
||||
KIND_FEATURE = "feature"
|
||||
TRACK_RELEASE = "release" # master/main 的上架轨(沿用旧名,历史构建号原地保留)
|
||||
TRACK_FEATURE = "feature" # 自测轨的固定轨道名
|
||||
LEGACY_RELEASE_TRACK = "release" # 旧版 master/develop 共用的上架轨,迁移时按分支拆开
|
||||
FIXED_TRACKS = (TRACK_RELEASE, TRACK_FEATURE)
|
||||
|
||||
# 按名字推断轨道的默认规则;config["branch_track"] 中的显式配置优先。
|
||||
RELEASE_BRANCH_NAMES = {"master", "main", "develop", "dev"}
|
||||
MASTER_BRANCH_NAMES = {"master", "main"}
|
||||
RELEASE_BRANCH_NAMES = MASTER_BRANCH_NAMES | {"develop", "dev"}
|
||||
RELEASE_BRANCH_PREFIXES = ("release/", "release-", "hotfix/", "hotfix-")
|
||||
|
||||
|
||||
@@ -113,8 +115,10 @@ def _is_release_branch(branch: str) -> bool:
|
||||
|
||||
|
||||
def _release_track_name(branch: str) -> str:
|
||||
"""上架轨道名即分支名;与固定的自测轨重名时加前缀避让。"""
|
||||
return f"release:{branch}" if branch == TRACK_FEATURE else branch
|
||||
"""上架分支的轨道名:master/main 为 release,其余即分支名(与固定轨重名时避让)。"""
|
||||
if (branch or "").strip().lower() in MASTER_BRANCH_NAMES:
|
||||
return TRACK_RELEASE
|
||||
return f"release:{branch}" if branch in FIXED_TRACKS else branch
|
||||
|
||||
|
||||
def _default_track_for_branch(branch: str) -> str:
|
||||
@@ -173,7 +177,8 @@ def _ensure_versions(config: dict) -> bool:
|
||||
"""确保 versions 为「每个上架分支一条轨 + 一条 feature 轨」结构,并迁移旧配置。
|
||||
|
||||
旧式单轨 ``{"app_ver": ..., "build_map": ...}`` 和旧的 master/develop 共用
|
||||
``release`` 轨,都会按上架分支拆成各自独立的轨道,并复制已用构建号,
|
||||
``release`` 轨,都会按上架分支拆开:master/main 留在 release 轨(历史构建号原地
|
||||
保留),develop 等其它上架分支新建以分支名命名的轨道,并复制一份已用构建号,
|
||||
使拆分后每个分支都从原来的构建号继续递增。
|
||||
"""
|
||||
versions = config.get("versions")
|
||||
@@ -191,16 +196,15 @@ def _ensure_versions(config: dict) -> bool:
|
||||
versions["tracks"] = tracks
|
||||
changed = True
|
||||
else:
|
||||
# 迁移后的轨道都带 kind;没有 kind 的 release 轨即旧的共用上架轨
|
||||
old = tracks.get(LEGACY_RELEASE_TRACK)
|
||||
if isinstance(old, dict) and "kind" not in old:
|
||||
build_map = old.get("build_map")
|
||||
# 迁移后的轨道都带 kind;没有 kind 的 release 轨即旧的 master/develop 共用轨,
|
||||
# 它继续作为 master/main 的轨道,同时作为其它上架分支新轨的初值。
|
||||
shared = tracks.get(TRACK_RELEASE)
|
||||
if isinstance(shared, dict) and "kind" not in shared:
|
||||
build_map = shared.get("build_map")
|
||||
legacy = {
|
||||
"app_ver": old.get("app_ver") or DEFAULT_APP_VER,
|
||||
"app_ver": shared.get("app_ver") or DEFAULT_APP_VER,
|
||||
"build_map": build_map if isinstance(build_map, dict) else {},
|
||||
}
|
||||
tracks.pop(LEGACY_RELEASE_TRACK)
|
||||
changed = True
|
||||
|
||||
feature = tracks.get(TRACK_FEATURE)
|
||||
if not isinstance(feature, dict):
|
||||
@@ -230,8 +234,8 @@ def _ensure_versions(config: dict) -> bool:
|
||||
changed = True
|
||||
for branch in config.get("branches", []) or []:
|
||||
name = branch_track.get(branch)
|
||||
if name == LEGACY_RELEASE_TRACK and LEGACY_RELEASE_TRACK not in tracks:
|
||||
# 旧的共用上架轨 → 该分支自己的轨
|
||||
if name == TRACK_RELEASE and legacy is not None:
|
||||
# 旧的共用上架轨 → master/main 留在 release 轨,其余分支拆到自己的轨
|
||||
name = _release_track_name(branch)
|
||||
if not isinstance(name, str) or not name:
|
||||
name = _default_track_for_branch(branch)
|
||||
@@ -263,8 +267,6 @@ def get_track_name(config: dict, branch: str) -> str:
|
||||
tracks = (config.get("versions") or {}).get("tracks") or {}
|
||||
if isinstance(name, str) and name in tracks:
|
||||
return name
|
||||
if name == LEGACY_RELEASE_TRACK: # 尚未迁移的旧配置
|
||||
return _release_track_name(branch)
|
||||
return _default_track_for_branch(branch)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user