Files
PromptX/docs/BRANCHING.md

5.1 KiB
Raw Blame History

PromptX 分支管理策略

分支模型

PromptX采用简化版Git Flow分支策略,包含三种类型分支:

main          ──●──●──●──●──●──●  (正式版本: v0.1.0, v0.2.0)
                ↑     ↑     ↑
develop      ──●──●──●──●──●──●──●  (snapshot: 0.1.0-snapshot.1)
               ↑  ↑  ↑  ↑  ↑
feature/xxx     ●──●──●
feature/yyy        ●──●──●

分支说明

🚀 main分支

  • 用途: 生产就绪的稳定代码
  • 保护: 只能通过PR合并需要代码审查
  • 发布: 自动发布正式版本到npm
  • 版本: v0.1.0, v0.2.0, v1.0.0

🔄 develop分支

  • 用途: 日常开发集成分支
  • 保护: 可直接推送但建议通过PR
  • 发布: 自动发布snapshot版本到npm
  • 版本: 0.1.0-snapshot.1, 0.1.0-snapshot.2

🌟 feature分支

  • 用途: 功能开发和Bug修复
  • 命名: feature/功能名fix/bug名
  • 合并: 合并到develop分支
  • 生命周期: 功能完成后删除

工作流程

1. 功能开发

# 从develop创建功能分支
git checkout develop
git pull origin develop
git checkout -b feature/new-awesome-feature

# 开发功能
# ... 编码 ...

# 提交代码
git add .
git commit -m "feat: add awesome feature"

# 推送分支
git push origin feature/new-awesome-feature

2. 创建PR到develop

  • 在GitHub上创建PR: feature/new-awesome-featuredevelop
  • 填写PR模板添加changeset
  • 等待代码审查和CI通过
  • 合并后自动发布snapshot版本

3. 发布正式版本

# 从develop创建PR到main
git checkout develop
git pull origin develop

# 在GitHub上创建PR: develop → main
# 合并后自动发布正式版本

版本发布策略

Snapshot版本develop分支

  • 触发条件: 推送到develop分支
  • 版本格式: 0.1.0-snapshot.1
  • npm标签: @snapshot
  • 用途: 测试和验证新功能
# 安装snapshot版本
npm install -g dpml-prompt@snapshot

正式版本main分支

  • 触发条件: 推送到main分支
  • 版本格式: 0.1.0, 0.2.0, 1.0.0
  • npm标签: @latest
  • 用途: 生产环境使用
# 安装正式版本
npm install -g dpml-prompt@latest

分支保护规则

main分支

  • 需要PR审查
  • 需要CI通过
  • 需要最新代码
  • 禁止直接推送
  • 禁止强制推送

develop分支

  • 需要CI通过
  • ⚠️ 建议通过PR可直接推送
  • 禁止强制推送

Changeset管理

添加Changeset

# 功能开发时添加changeset
pnpm changeset

# 选择变更类型
# - patch: Bug修复
# - minor: 新功能
# - major: 破坏性变更

Changeset类型对应

变更类型 Changeset 版本影响 示例
🐛 Bug修复 patch 0.1.0 → 0.1.1 修复CLI参数解析错误
新功能 minor 0.1.0 → 0.2.0 添加新的remember命令
💥 破坏性变更 major 0.1.0 → 1.0.0 改变CLI命令结构

实际操作示例

开发新功能

# 1. 创建功能分支
git checkout develop
git checkout -b feature/memory-search

# 2. 开发功能
# ... 编码 ...

# 3. 添加changeset
pnpm changeset
# 选择: minor
# 描述: "添加记忆搜索功能"

# 4. 提交并推送
git add .
git commit -m "feat: add memory search functionality"
git push origin feature/memory-search

# 5. 创建PR到develop
# 合并后自动发布snapshot版本

发布正式版本

# 1. 确保develop分支稳定
git checkout develop
git pull origin develop

# 2. 运行完整测试
pnpm test:ci

# 3. 创建PR: develop → main
# 在GitHub UI中操作

# 4. 合并PR后自动发布正式版本

紧急修复流程

对于需要紧急修复的bug

# 1. 从main创建hotfix分支
git checkout main
git checkout -b hotfix/critical-bug

# 2. 修复bug
# ... 编码 ...

# 3. 添加changeset
pnpm changeset
# 选择: patch

# 4. 同时合并到main和develop
# 创建PR到main: hotfix → main
# 创建PR到develop: hotfix → develop

最佳实践

推荐做法

  • 功能开发从develop分支创建
  • 每个功能分支专注单一功能
  • 提交前运行测试和lint
  • 写清晰的提交信息
  • 及时添加changeset

避免做法

  • 直接在main分支开发
  • 长期存在的功能分支
  • 跳过changeset添加
  • 强制推送到保护分支
  • 合并未经测试的代码

工具和自动化

GitHub Actions

  • CI: 每次PR都运行测试
  • Snapshot发布: develop分支自动发布
  • 正式发布: main分支自动发布
  • PR检查: 自动检查changeset

本地工具

# 安装git hooks
pnpm prepare

# 运行完整验证
pnpm validate

# 查看changeset状态
pnpm changeset:status

参考资料