Bitbucket入门使用教程

本系列文章:

Jira入门使用教程

Bitbucket

Bitbucket是Atlassian旗下的代码仓库管理平台,其基于git开发,并通过插件化形式提供了丰富的拓展能力,同时可以借助已部署的Jira提供用户目录,提供SmartCommit联动等高级特性。

主要概念

Bitbucket中主要分为项目、仓库两个主要大方向的概念。

项目 Project

Bitbucket中项目为一组仓库进行管理的位置,同项目下将存在例如前端、后端、文档等需要进行版本管理的不同部分,则可构建一个Bitbucket仓库,而后在仓库下根据不同版本管理数据属性定义对应的仓库进行管理。

项目设置中可对该项目权限进行从用户与用户两个方面的细粒度掌控。

仓库 Repository

仓库与常规GitHub、GitLab中仓库概念一致,为数据版本管理的一个单元。而Bitbucket仓库由于可以向仓库中添加插件,因此其功能多变复杂。同时其还具备BranchModel功能,基础的代码评审功能。

分支模型 BranchModel

Bitbucket中可通过分支模型将软件开发流程中对代码的变动通过分支前缀进行快速分类,并对不同类型的分支划分其影响范围。同时由于Bitbucket SmartCommit将提供Jira问题与Bitbucket仓库代码提交的集成联动功能,因此可直接从Jira侧创建对应类型的仓库分支,达到软件开发DevOps左侧循环的完全通畅。(项目上也可以直接设置项目作用域范围的分支模型,因此仓库设置中可直接选择从项目设置中继承分支模型)

Merge Request / Pull Request (合并申请/拉取申请)

Merge or pull requests are created in a git management application and ask an assigned person to merge two branches. Tools such as GitHub and Bitbucket choose the name pull request since the first manual action would be to pull the feature branch. Tools such as GitLab and Gitorious choose the name merge request since that is the final action that is requested of the assignee. In this article we’ll refer to them as merge requests.

在git管理程序中合并和拉取申请将向代码评审(经办人)申请合并两个分支。例如GitHub、Bitbucket这类工具考虑到该动作的站在发起方的视角需要经办人拉取发起方提交的代码并进行合并,因此选择将其命名为”拉取申请”。而GitLab、Gitorious则考虑到站在该动作的经办人的视角发起方向经办人发起的是一个合并代码目标,因此命名为“合并申请”,但从逻辑上两者仅为不同视角下的同一动作的不同命名方式。

StackOverflow Pull Request vesus Merge Request

合并申请(这里我就站在分支拥有方的角度翻译)为保证代码质量的一个非常重要的步骤,因此Bitbucket中内置了基础的代码合并机制,并提供了合并检查、合并策略等代码合并配置,这类我就简单说明一下合并的逻辑。

Commit Merge一直为协同开发中最容易出错的一环,由于每个人的代码风格、代码质量、代码设计都可能会有差异,因此若任何开发人员在不经过同一的代码审查之后即并入主开发分支或配置CI/CD的公共分支将会造成无法预知的影响,因此提出用户新增特性、修复bug需要从开发或稳定分支中迁出一枝独立分支,并在该分支中完成对应的功能后再向迁出分支的管理者申请合并,当分支管理者对该合并代码进行测试后即可拒绝合并或通过合并,通过此机制可大幅提高公共分支的稳定性,并于此类分支上构建CI/CD时,自动构建管道中Manifest产出也会相对稳定。

这里我们从一个项目的合并申请配置来举例:

添加默认评审人

该界面可添加多种评审规则,相对比较灵活,此处我选择当向release分支申请合并代码时将需由我进行评审:

创建开发分支

从Jira对应问题中直接创建对应Bitbucket仓库分支:

创建PullRequest合并

当完成该特性开发后即可通过对应Jira问题直接申请Pull Request,而后CodeReviewer审查代码后即可进行合并:

合并代码

代码评审在收到来自成员的代码合并请求后,即可于此处查看所需合并代码的差异、Commit等信息,并根据提交情况此处可选合并和拒绝:

经过上述操作后,该Jira问题开发栏显示如下:

下面是发生MergeConflict合并冲突时的过程展示:

下图为通过VSCode进行代码合并的流程:

经过冲突解决后,即可完成合并:

合并并删除原分支:

SmartCommit修改Jira问题状态

如需使用Bitbucket与Jira 的SmartCommit对问题进行管理,需管理员在管理->应用程序->应用程序链接->Bitbucket配置->Smart Commits 将SmartCommit开启,若该设置未开启,则无法直接通过Bitbucket中提交CommitMessage提交:

Jira应用程序链接管理中修改SmartCommit配置状态:

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注