跳至主要内容

使用 Git 和 GitHub

本页介绍我们在 RabbitMQ 项目中使用 Git 的方式。

概述

Git 是一种快速、功能强大的分布式源代码管理系统。它有许多教程

RabbitMQ 团队使用 Git 管理几乎所有源代码。

RabbitMQ 源代码仓库托管在 GitHub 上。本网站上的各个项目页面通常会将您指向需要签出的特定模块组合。

本网站也是开源并托管在 GitHub 上

分支策略:每个问题一个分支

RabbitMQ 在开发 RabbitMQ 代码时使用每个问题一个分支的技术,每个功能或错误修复都在自己的分支上开发,使用

git checkout -b

并且只有在通过 QA 后才合并到mainstable分支。分支遵循模式repository-name-NN,其中repository-name是提交问题的 GitHub 项目的名称(例如rabbitmq-dotnet-client),而NN是 GitHub 问题编号。在问题所属的仓库名称之前添加前缀是为了防止一个问题需要对多个项目进行更改。还有一些名为bugNNNNN的分支,用于原始 Bugzilla 跟踪器(非公开)中的问题。

拉取请求和审查/QA 流程

准备审查和/或 QA 的分支应作为拉取请求提交。然后在评论中提供反馈。收到反馈后,更新原始分支并推送:GitHub 将负责更新拉取请求。然后该过程继续进行,直到拉取请求被合并或关闭(例如,由于在尝试实现后拒绝了功能)。

如果拉取请求是包含与最新稳定版本不兼容的更改(即,没有对 Mnesia 架构或节点间通信进行更改)的错误修复,则必须针对stable分支进行,否则针对main分支。

主分支

默认仓库分支包含所有已通过 QA 并计划在下一次功能发布中出现的代码。

通常,您可以通过跟踪感兴趣的 RabbitMQ 仓库的主(默认)分支来跟踪已通过 QA 的开发工作。

打算在当前维护的发布系列(例如 3.11.x)中发布的拉取请求将被回溯到发布系列特定的分支。

发布系列分支

每个当前维护的发布系列也有一个单独的分支。这些分支以系列命名:v3.13.xv3.12.x等。

它与main分支的作用相同,只是它包含合并的、经过 QA 的代码,这些代码用于下一次错误修复发布,而不是下一次通用发布。

打算在当前维护的发布系列中发布的拉取请求在合并到main分支后会被回溯到这些分支。在此过程中,它们将在 GitHub 上使用backport-v3.13.xbackport-v3.12.x等标签进行标记。

例如,如果一个拉取请求标记了backport-v3.12.x,则意味着它已被回溯或至少被考虑回溯到v3.12.x分支以在 3.12.x 版本中发布。

标签

RabbitMQ 团队在 git 仓库中使用标签来命名代码状态的快照:最重要的是发布。通常,核心仓库和旨在与命名快照一起工作的插件仓库都将被标记。

例如,如果您使用的是 RabbitMQ 服务器版本 3.12.7,则检查git tag的输出结果为

git tag
# omitted for brevity
# => v3.13.0
# => v3.12.13
# => v3.12.12
git checkout v3.13.0

此时,您可以按照插件文档中说明的步骤继续编译插件。