snow/doc/Git-Management/Git-Management.md

5.3 KiB
Raw Blame History

Snow 项目 Git 管理规范

1. 版本控制基础

本项目使用 Git 进行版本控制,并遵循以下基本原则:

  • 所有代码更改必须通过 Git 提交并推送到远程仓库。
  • 每次提交都应包括清晰、简洁且具描述性的提交信息,便于团队成员理解变更目的。
  • 严禁直接在 main 分支上进行开发,所有功能开发应通过分支进行。

2. 分支管理

本项目采用以下分支策略以高效管理代码:

2.1 主分支 (main)

  • 用途main 分支始终保持项目的稳定版本,该分支的代码可随时部署到生产环境。
  • 更新规则:仅允许经过充分测试并审核的代码合并至 main 分支。每次从 devrelease 分支合并到 main 时,需打上版本标签。

2.2 开发分支 (dev)

  • 用途dev 分支作为所有开发工作的集成分支。所有新功能开发应首先合并至 dev 分支,经过集成测试后再合并到 main
  • 更新规则:团队成员应从 dev 分支拉取最新代码,完成开发后将功能合并回 dev

2.3 功能分支 (feature/*)

  • 用途:每个新功能开发应从 dev 分支创建独立的功能分支。

  • 命名规范feature/功能描述,例如:feature/ASTfeature/user-cli

  • 开发流程

    1. dev 分支拉取最新代码。
    2. 完成功能开发后,在本地提交代码并推送至远程仓库。
    3. 创建拉取请求PR合并至 dev 分支。

2.4 修复分支 (bugfix/*)

  • 用途:用于修复 bugs。修复分支可从 devmain 分支创建。

  • 命名规范bugfix/bug描述,例如:bugfix/fix-AST-error

  • 开发流程

    1. devmain 分支拉取最新代码。
    2. 完成修复后,提交修改并推送至远程仓库。
    3. 创建 PR合并至相应分支。

2.5 发布分支 (release/*)

  • 用途:当 dev 分支的功能开发完成并准备发布时,应创建 release 分支。

  • 命名规范release/vX.X.X,例如:release/v1.0.0

  • 开发流程

    1. dev 分支创建 release 分支。
    2. release 分支上完成版本发布的最终准备工作,如文档更新和版本号调整等。
    3. 完成发布准备后,将 release 分支合并至 main 并打上版本标签,随后合并回 dev 分支。

3. 提交规范

为确保提交信息清晰且易于理解,遵循以下提交规范:

3.1 提交信息格式

提交信息应简洁且具有描述性,格式如下:

[类型] 描述

详细描述(可选)

提交类型

  • feat新增功能feature
  • fix:修复 bug
  • docs:文档更新
  • style:代码格式调整(不影响功能)
  • refactor:代码重构
  • test:增加/修改测试
  • chore:工具配置等其他杂项任务

示例

  • feat: 添加 IR 折叠功能
  • fix: 修复 IR 折叠错误
  • docs: 更新 API 文档
  • refactor: 优化 AST 逻辑

3.2 提交实践

  • 提交时请确保代码已完成并通过所有相关测试。
  • 每次提交应包含少量且相关的变更,避免一次性提交过多内容。

4. 合并和拉取请求PR

在多人协作开发过程中拉取请求PR是确保代码质量和功能完整性的核心工具。所有的代码合并都必须经过严格的代码审查和测试验证。

4.1 拉取请求流程

  1. 开发者在完成功能或修复后,创建 PR将其分支合并至 devmain 分支。
  2. 其他团队成员进行代码审查,重点检查代码质量、功能完整性及测试覆盖率。
  3. 审查通过后PR 将被合并。
  4. 合并时,推荐使用 Squash and Merge 方式,避免留下过多冗余的提交历史。

4.2 代码审查

  • 所有 PR 必须经过至少一名开发者的代码审查。

  • 审查时应关注以下方面:

    • 代码是否符合项目的编码规范。
    • 是否提供了足够的单元测试覆盖。
    • 是否存在冗余代码或复杂度过高的部分。
    • 功能是否按预期工作。

5. 版本发布

版本发布基于 Git 标签,发布流程如下:

5.1 打标签

每当版本准备发布时,应在 main 分支上打上版本标签:

  • 版本号规则采用语义化版本控制SemVer格式版本号由三部分组成主版本号.次版本号.修订号(例如:v1.0.0)。

  • 标签命令

    git tag v1.0.0
    git push origin v1.0.0
    

5.2 发布流程

  1. 确保所有功能已合并至 dev 分支,并通过集成测试。
  2. dev 分支创建 release 分支,进行版本发布的准备工作。
  3. release 分支上完成最终修改,如文档更新和版本号调整。
  4. release 分支合并至 main 并打上版本标签。
  5. 合并 release 分支的变更回 dev,确保所有修复和改动在开发分支中得到同步。

5.3 发布后

  • 发布版本后,团队成员应确保将 main 分支的最新代码拉取到本地,以保持代码库的同步。
  • 如出现生产环境问题,应及时创建 hotfix 分支进行紧急修复。

6. 合作与沟通

  • 团队成员应保持良好的沟通,特别是在合并大型功能时,确保不会出现冲突。
  • 定期进行团队会议,回顾代码审查过程并讨论开发流程和工具的改进建议。