核心用法
deploy-public 是一个 Bash 脚本工具,专为实现「私有开发 → 公开发布」的仓库同步流程而设计。使用时只需执行一行命令,指定本地私有仓库路径及目标公开仓库(格式:org/repo-name),脚本即可自动完成以下操作:克隆公开仓库临时副本 → 将私有仓库代码(自动排除 ai/ 与 .git 目录)覆盖复制 → 创建新分支并推送 → 在 GitHub 发起 Pull Request → 执行常规合并(非 squash)→ 同步 GitHub Releases 的发布说明。
显著优点
- 流程标准化:将原本分散的手动操作(复制文件、创建 PR、合并、同步 release)封装为单一命令,降低人为操作失误风险。
- Release 同步能力:能够从私有仓库的 GitHub Release 中提取发布说明并同步至公开仓库,确保变更日志的连续性。
- 轻量依赖:仅依赖 git、GitHub CLI (gh) 和 bash,无额外运行时环境要求。
- 开源友好:采用 MIT 许可,允许自由修改和分发。
潜在缺点与局限性
- 强制依赖顺序:必须先完成私有仓库的 PR 合并并运行 wip-release 创建 release,才能执行 deploy-public;若顺序颠倒,公开仓库的 release notes 将为空。
- 硬编码排除规则:ai/ 目录被强制排除,若用户需要保留该目录或自定义排除规则,需修改源码。
- 合并策略固定:仅支持 regular merge,不支持 squash 或 rebase 合并,可能与部分团队的 Git 工作流冲突。
- 无冲突处理机制:若公开仓库存在与私有仓库冲突的修改,脚本未提供自动冲突解决逻辑。
- 首次 setup 需手动:要求公开仓库已存在于 GitHub,不支持自动创建远程仓库。
适合人群
- 采用「私有开发 + 公开镜像」双仓模式的开源项目维护者
- 需要定期将内部代码脱敏后发布到公开仓库的开发者
- 已使用 GitHub CLI 并熟悉命令行操作的 DevOps 工程师
常规风险
- Token 权限风险:依赖 gh CLI 的认证状态,若使用个人访问令牌,需确保具备目标仓库的写入及 PR 合并权限。
- 敏感信息泄露:虽然排除 ai/ 目录,但若私有仓库其他位置包含敏感信息(如密钥、内部配置),复制操作将导致泄露。
- Release 数据丢失风险:若未按正确顺序执行,公开仓库的 release notes 将为空,影响用户感知。
- 临时目录残留:脚本使用临时目录克隆公开仓库,若执行中断可能产生残留文件。