fix(ci): 修复auto-fix在tarball checkout模式下git不可用的问题 #629
Reference in New Issue
Block a user
Delete Branch "fix/ci-autofix-git-repo"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
Checkout脚本(
step_checkout.sh)使用tarball方式下载代码,没有.git目录。导致auto_fix_formatting.py中的git status命令失败,自动格式化修复功能完全不可用。修复
在
auto_fix_formatting.py中新增ensure_git_repo()函数:git init影响
关联:#619 CI稳定性全面根治
🚀 预览环境已部署
代码审查结果 - PR #629
⚠️ 问题(2个需要修改)
)
token的完整 URL 直接通过git remote add origin写入 git 配置文件。这会导致 token 明文存储在.git/config中,如果后续脚本执行git config --list或打印该文件,token 将泄露。此外,进程列表(如ps)也可能捕获该参数。建议仅添加不带认证信息的 remote,在 fetch 时临时使用带 token 的 URL,或利用git credential helper。urllib.request.urlopen可能会因网络波动、API 限流或认证失败抛出URLError/HTTPError,json.loads可能因响应格式错误抛出JSONDecodeError。当前代码未捕获这些异常,会导致脚本直接崩溃并抛出堆栈信息,不利于 CI 排错。建议增加try-except块捕获异常并打印友好的错误日志。💡 建议(1个可选)
headref 进行 fetch,但工作区内容来自 tarball。如果在 CI 启动下载 tarball 与脚本执行 fetch 之间,PR 被推送了新的提交,会导致FETCH_HEAD指向新的 commit,而工作区是旧代码。随后的git read-tree会导致工作区被视为“回退”状态,最终 commit 可能会意外覆盖他人的更新。建议 CI 环境传入具体的 commit SHA,而非动态获取分支 HEAD;或者确认 CI 平台在运行期间会锁定 PR。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 11:47:53 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #629 已关闭或合并,对应的预览环境已被清理。