一、代码托管发展史
版本控制系统发展史简单概括经历了三代,下面给大家简单介绍一下:
1、第一代
无网络部署,一次只能操作一个文件,基于同步锁阻塞机制,典型的产品:RCS、SCCS
2、第二代
集中式网络部署,一次可以操作多个文件,支持并发操作不过需要先本地合并,然后提交到版本库,典型的产品:CVS、Subversion、SourceSafe、微软的TFS版本控制系统
3、第三代
分布式网络部署,基于变更集的方式操作多个文件,支持并发,需要先提交,然后再合并到版本库,典型的产品:Git、Mercurial、Bazaar。
其中第三代是以Git为典型代表的分布式版本控制系统(Distributed Version Control System),Git诞生于2002年,由Linux之父Linus Torvalds带领Linux开源社区开发完成。初衷是用其管理Linux内核的庞大的开源代码,后续被GitHub、Gitlab等国际开源软件发扬光大,目前被大多数开源项目和企业项目所使用。Git属于当前代码托管的主流技术。
二、CodeArts Repo 介绍
CodeArts Repo(前身CodeHub) 是华为全栈自研的代码托管服务平台,它基于Git提供分布式代码管理和协同开发能力。提供了成员管理、权限控制、代码托管、代码检查、代码审核、代码追溯、CI/CD集成等实用功能,助力不同规模企业提升研发质量和研发效率。
三、CodeArts Repo 功能架构
1、研发协同
单仓开发协同:代码浏览、合并请求、代码检视、文件搜索、保护分支、合入门禁(代码合并检查机制)
多仓开发协同:多仓检视、Change-id、多仓提交、挑单合入、原子合入、细粒度权限。
2、代码管理功能
- 仓库&分支管理:仓库管理、分支管理、tag管理、历史管理
- 组织权限管理:成员管理、角色管理、权限管理、组织管理
- 检视&门禁:文件对比、门禁判断、评论、代码审核
- 系统集成:需求系统、缺陷系统、CI/CD、自定义扩展
3、代码存储特性
- 稳定性:多中心、容灾、多活、容器化部署、弹性化伸缩。
- 性能:多副本、分布式数据库、分布式缓存、分布式部署。
- 安全:漏洞感知、智能监控、防篡改、加密存储、阻断隔离、最小权限、态势感知、攻击探测。
四、CodeArts Repo 技术能力
- 对外接口:支持SSh/HTTPS、Web Portal、APIs、WebHooks Stream event。
- 运维监控:现网告警、现网拔测、API监控、全链路监控、存储带宽监控、流量监控、容量监控、升级运维、异常访问监控。
五、华为云代码托管技术发展历程
- 2010:预研代码仓技术、选型。
- 2013:基于Gitlab改造、完成华为代码仓上线。
- 2019:完成自研、自主可控代码仓上线。
- 2020:完成华为内部所有代码仓统一管理。
- 2022:支撑20万研发人员使用的成熟CodeArts Repo代码托管平台完成。
六、CodeArts Repo使用场景介绍
1、仓库管理员
- 活动:在项目初期创建仓库、初始化代码、仓库配置设置,同时完成仓库成员管理、权限管理、配置保护分支权限的配置。
- 交互方式:界面操作、API接口和代码托管服务交互。
2、开发人员日常开发活动
- 活动:上传、拉取代码;拉取分支、创建MR、协作开发;在线监视代码、修复代码、关联需求缺陷单。
- 交互方式:命令行、开发工具、浏览器。
3、代码审核活动
- 活动:在线查看代码、检视代码代码审核、代码责任田守护;门禁、代码合入;管理Committer权限。
- 交互方式:开发工具、浏览器。
4、自动化系统配置员
- 活动:流水线webhook等配置;流水线构建触发;门禁、项目级CI、版本级CI 对接。
- 交互方式:Webhook、API。
5、测试人员
- 活动:测试代码上传、下载;出测试软件包。
- 交互方式:浏览器。
6、版本经理发版本
- 活动:锁库、发版本打tag。
- 交互方式:浏览器。
7、QA/产品经理
- 活动:审计度量、E2E追溯审计。
- 交互方式:API。
七、CodeArts Repo 产品优势
1、全栈自研,安全无忧
基于云原生架构全栈自研,Cell化部署,独有的分片加密存储,IP白名单和细粒度的访问权限控制,加密传输,异地容灾备份,为您提供云端极致安全和韧性的代码托管服务。
2、高效代码协同开发
内置华为多年变革实践成果,覆盖云、管、端车等各类开发协同场景,支持不同规模团队包括微服务devops和大型团队协同开发,内置各类规则和模板,确保团队高效协同.
3、多层级代码质量防护
基于代码分支和成员角色的代码上库作业流控制,配合工具自动化检查和人工审核流程内嵌华为CleanCode实践成果,保证每一行上库代码的质量。
4、以代码为中心的研发资产追溯
作为研发核心资产的代码,让你清晰了解每一行代码的来龙去脉,提供从需求、设计、Story、代码、缺陷到产品版本的完整追溯路径,方便版本跟踪和问题修复。
八、应用场景介绍
1、团队级别的开发协同
优势
- 云端代码存储,开箱即用
- 简易开发流程,快速迭代开发
- 多种协同开发模式选择(分支开发/Fork仓开发)
- 随时随地检视代码
- 链无缝集成自动化流水线
2、企业级别的开发协同
优势
- 跨团队,跨地域协同开发
- 组织级代码开发规范
- 多角色细粒度权限控制
- 多种内嵌模板,统一开发过程
- 研发资产数据分析和洞察
- 丰富的扩展点,方便企业集成
- 代码核心资产备份
九、CodeArts Repo特性介绍
1、代码审核上库门禁
- 特性:多层级、细粒度代码上库质量门禁。
- 支持人工审核、自动化流水线集成对上库代码进行质量管控,不符合质量指标的代码不允许入库,人工审核支持权责分离原则 (SOD),自动化检查支持分支级管控。
2、代码检视
- 特性:多形式的代码检视活动。
- 支持基于文件的随心检视、合并请求代码检视能力,让团队集中检视或者分散式协同检视,支持检视模板、检视人自动分配、检视任务通知设置检视意见可跟踪,可闭环。
3、细粒度权限控制
- 特性:基于角色的细粒度权限控制。
- 针对仓库管理、仓库配置、代码开发等活动提供细粒度的权限控制,不同成员的代码访问权限支持分支级权限管控,提升协同开发效率和确保代码安全。
4、围绕代码的E2E追溯
- 特性:围绕代码的研发资产追溯。
- 提供从需求、任务、设计、缺陷、代码、版本的记录追溯,掌握每一样代码的来龙去脉,方便网上问题定位和审计。
5、仓库规范及模板
- 特性:丰富的仓库模板,标准化的团队开发活动。
- 提供仓库模板,代码检视模板,合并请求模板,可配置必填和选填字段,确保团队开发行为统一,更加方便的基于研发数据做效能分析和改进。
6、安全和韧性
- 特性:提供极致安全和韧性。
- 基于云原生架构全栈自研,提供极致韧性和安全的代码托管能力,源于华为实践成果,覆盖云、管、端、车、IT等超大产品协同开发,10亿级代码管理,万人团队并发在线协同作业高并发代码下载,超大存储容量.
7、多作业流支持
- 特性:提供多种开发作业协同方式。
- 提供基于Git的多种开发协作模式,既适合中小企业灵活开发模式,也支持中大型企业的复杂开发协作模式。
8、全栈自研
- 特性:华为全栈自研。
- 全新的云化架构,基于云原生架构分层构建,cell集群化部署,智能副本调度,配合独创的压缩存储技术,提升代码并发访问上限,支持超大规模、超大团队协同开发。
十、使用CodeArts Repo的关键流程
1、确定开发规范
- 设定默认分支:master。
- 确定保护分支:master与 develop。
确定分支的命名规范:
¡Features/abc[特性描述]。
¡hotfix/115[问题单日期]。
- 确定版本的命名规范,并用这个规范来打标签。
- 确定团队内部统一的Commit规范。
- 确定合并请求的参与者,职责。
2、确定开发流程
- 创建仓库
- 开发人员下载代码
- 创建工作分支
- 提交代码
- 创建合并请求
- 邀请团队成员,参与代码评审
- 仓库管理员,审视后合入代码
3、配置仓库规则
大家通过官方帮助文档进行详细学习如何配置仓库规则。
成长地图_代码托管 CodeArts Repo_华为云 (huaweicloud.com)。
下面展示配置仓库规则的一些界面效果,相信对大家了解CodeArts Repo会非常有帮助,大家一起来看看吧。
提交规则:
编辑提交规则:
项目成员管理:
设置分支的保护策略:
编辑保护分支:
合并请求设置界面:
设置代码审合并请求策略:
代码合并审核效果界面:
代码检视审核详情界面:
十一、总结
这款华为自研的代码托管平台,涵盖了代码托管领域几乎所有的功能特性比如(权限控制、安全性、高性能、代码审核机制、版本日志记录、多作业流的支持等等),对于企业和软件公司来说是非常不错的选择。