diff --git a/doc/Git-Management/Git-Management.md b/doc/Git-Management/Git-Management.md new file mode 100644 index 0000000..70575d1 --- /dev/null +++ b/doc/Git-Management/Git-Management.md @@ -0,0 +1,144 @@ +# Snow 项目 Git 管理规范 + +## 1. 版本控制基础 + +本项目使用 Git 进行版本控制,并遵循以下基本原则: + +* 所有代码更改必须通过 Git 提交并推送到远程仓库。 +* 每次提交都应包括清晰、简洁且具描述性的提交信息,便于团队成员理解变更目的。 +* 严禁直接在 `main` 分支上进行开发,所有功能开发应通过分支进行。 + +## 2. 分支管理 + +本项目采用以下分支策略以高效管理代码: + +### 2.1 主分支 (`main`) + +* **用途**:`main` 分支始终保持项目的稳定版本,该分支的代码可随时部署到生产环境。 +* **更新规则**:仅允许经过充分测试并审核的代码合并至 `main` 分支。每次从 `dev` 或 `release` 分支合并到 `main` 时,需打上版本标签。 + +### 2.2 开发分支 (`dev`) + +* **用途**:`dev` 分支作为所有开发工作的集成分支。所有新功能开发应首先合并至 `dev` 分支,经过集成测试后再合并到 `main`。 +* **更新规则**:团队成员应从 `dev` 分支拉取最新代码,完成开发后将功能合并回 `dev`。 + +### 2.3 功能分支 (`feature/*`) + +* **用途**:每个新功能开发应从 `dev` 分支创建独立的功能分支。 +* **命名规范**:`feature/功能描述`,例如:`feature/AST`、`feature/user-cli`。 +* **开发流程**: + + 1. 从 `dev` 分支拉取最新代码。 + 2. 完成功能开发后,在本地提交代码并推送至远程仓库。 + 3. 创建拉取请求(PR),合并至 `dev` 分支。 + +### 2.4 修复分支 (`bugfix/*`) + +* **用途**:用于修复 bugs。修复分支可从 `dev` 或 `main` 分支创建。 +* **命名规范**:`bugfix/bug描述`,例如:`bugfix/fix-AST-error`。 +* **开发流程**: + + 1. 从 `dev` 或 `main` 分支拉取最新代码。 + 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,将其分支合并至 `dev` 或 `main` 分支。 +2. 其他团队成员进行代码审查,重点检查代码质量、功能完整性及测试覆盖率。 +3. 审查通过后,PR 将被合并。 +4. 合并时,推荐使用 **Squash and Merge** 方式,避免留下过多冗余的提交历史。 + +### 4.2 代码审查 + +* 所有 PR 必须经过至少一名开发者的代码审查。 +* 审查时应关注以下方面: + + * 代码是否符合项目的编码规范。 + * 是否提供了足够的单元测试覆盖。 + * 是否存在冗余代码或复杂度过高的部分。 + * 功能是否按预期工作。 + +## 5. 版本发布 + +版本发布基于 Git 标签,发布流程如下: + +### 5.1 打标签 + +每当版本准备发布时,应在 `main` 分支上打上版本标签: + +* **版本号规则**:采用语义化版本控制(SemVer)格式,版本号由三部分组成:`主版本号.次版本号.修订号`(例如:`v1.0.0`)。 +* **标签命令**: + + ```bash + 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. 合作与沟通 + +* 团队成员应保持良好的沟通,特别是在合并大型功能时,确保不会出现冲突。 +* 定期进行团队会议,回顾代码审查过程并讨论开发流程和工具的改进建议。 \ No newline at end of file