产品功能
代码托管服务支持的主要功能如下。关于各功能支持的地域(Region)信息,可通过控制台查询详情。
介绍代码入库流程
个人环境配置
用户在代码托管进行代码开发前,需要完成个人的环境配置。
作为代码托管的基础工具,用户需要先完成本地 Git 环境的搭建。
当用户需要将代码推送到云端仓库或从云端仓库下拉代码时,云端仓库需要验证用户的身份与权限,代码托管提供了SSH 密钥、HTTPS密码、访问令牌和GPG公钥的验证方法,以此保障代码访问的安全性。
在提交代码或创建代码评审(MR)时,系统需要使用提交邮箱来标识提交者,确保每个提交都能准确追溯到具体的提交者,因此建议每位开发者在进行开发前,配置提交邮箱。
当代码仓涉及大文件存储时,用户可配置Git LFS。
有关更多信息,请参阅环境和个人配置。
配置仓库设置
代码托管支持用户对项目下或者代码组下的所有仓库设置相同的仓库设置。
如果对项目或者代码组下的仓库进行统一设置,可以提升代码仓信息的批量管理效率,确保项目或者代码组下仓库规则的一致性。
有关更多信息,请参阅配置项目级仓库设置、配置代码组的仓库设置和配置仓库设置。
配置保护分支规则
在软件开发过程中,团队成员频繁地向主分支提交代码,这可能导致代码质量下降和安全问题。
为了确保代码质量和安全性,可以配置保护分支规则,这些规则可以保证分支的安全性,允许开发人员使用合并请求合入代码,同时阻止管理者以外的人推送代码,阻止任何人强行推送到此分支,以及阻止任何人删除此分支。
通过合理设置项目级或者仓库级的保护分支规则,可以有效防止未授权的代码提交,确保代码审查过程的严格执行,从而提高代码质量和安全性。
有关更多信息,请参阅配置项目级保护分支规则、配置代码组的保护分支和配置仓库级保护分支规则。
配置合并请求规则
在软件开发团队中,为了确保代码质量和团队协作效率,通常需要对代码合并请求进行严格的评审。然而,在实际操作中,由于缺乏有效的规则设置,可能会导致代码质量下降、团队协作效率低下等问题。
研发团队可以通过配置合并请求规则来解决这些问题,如果研发的评审问题未全部解决时,不能合入合并请求,单子也不能关闭。
有关更多信息,请参阅设置项目级合并请求规则、配置代码组的合并请求规则和配置仓库级合并请求规则。
配置Webhook
在现代软件开发流程中,开发团队经常需要将代码托管仓库与CI/CD工具或其他第三方系统进行集成,以实现自动化构建、测试和部署。
然而,手动触发这些流程不仅耗时,还容易出错。配置Webhook可以解决这一问题,通过实现代码托管仓库与第三方系统的无缝衔接,当订阅的分支推送、Tag推送等事件发生时,自动发送 POST 请求触发第三方系统的通知弹窗、构建、镜像更新、部署等操作,减少人工干预,提升开发部署全流程的效率。
代码托管支持用户根据项目实际需求选择订阅的事件类型,还可通过分支过滤正则规则精准定位触发条件,避免无关事件的无效触发,确保资源聚焦于关键操作,满足不同项目的个性化需求。
代码托管提供Token鉴权功能,鉴权信息通过HTTP请求头传输,同时要求用户对URL中的敏感数据自行加解密,双重保障接口调用和数据传输的安全性,降低信息泄露风险。
代码托管的Webhook支持配置自定义的第三方系统URL,且Token类型除预设选项外还可自定义,能够灵活对接各类自建系统或主流 CI/CD 工具,适配不同技术栈和业务场景的集成需求。
有关更多信息,请参阅配置项目级的Webhook设置、配置代码组级的Webhook和配置代码仓的Webhook设置。
新建代码仓库
代码托管提供了不同方式进行新建仓库,目前代码托管服务提供以下几种仓库创建方式:
- 自定义新建代码仓库。当团队启动全新项目,并且需要个性化配置仓库结构和规则时,可以自定义新建代码仓库,此创建方式的灵活性较高。
- 按模板新建代码仓库。团队可基于系统提供的预设模板创建仓库,不需要从零开始搭建基础配置,此创建方式可以保证项目初始化的统一性,减少重复配置工作。
- Fork仓库。当开发者需要在原仓库的基础上进行二次开发和贡献代码,或者学习原项目代码的场景,可以基于已存在的目标仓库创建派生仓库,该方式会复制原仓库的代码、分支和提交历史等,且后续可通过合并请求与原仓库同步更新。
- 迁移代码仓库。团队可以从其他代码托管平台迁移到代码托管,即可保留项目历史数据,当前支持迁移GitHub仓、GitLab仓、自建GitLab仓、Gitee仓、Coding仓、Codeup仓、Bitbucket仓库和Gerrit仓。
有关更多信息,请参阅管理Repo代码仓库和迁移代码与同步仓库。
Fork仓库
在软件开发领域,大型项目通常包含多个子项目,开发过程中频繁的代码提交和测试可能导致项目版本仓库(源仓库)的不稳定。Fork仓库提供了一种解决方案,它允许开发者基于源仓库创建一个完全相同的镜像仓库。在镜像仓库中,开发者可以自由地进行开发和测试,而不会对源仓库产生任何影响。
只有当新特性被充分测试并确认无误后,才会通过合并请求将这些修改合并回源仓库。这种模式有效地解决了大型项目开发中的代码管理问题,提高了团队协作效率。通过使用Fork仓库,开发者可以在独立的环境中进行开发,确保源仓库的稳定性和安全性。
有关更多信息,请参Fork仓库。
备份仓库
在软件开发过程中,为了确保代码的安全性和可恢复性,开发团队通常需要定期对代码仓库进行备份。然而,当开发团队尝试将仓库备份到华为云的其他区域或本地计算机时,可能会遇到操作复杂、连通性问题等挑战。您可以选择将仓库备份到华为云的其它区域,这本质上是一次导入外部仓库的操作,将一个区域的仓库备份到另一个区域中。
此外,您也可以选择将仓库备份到本地计算机,通过使用HTTPS或SSH两种clone形式生成clone命令,只需粘贴进本地Git客户端并执行即可,但需确保仓库的连通性。
有关更多信息,请参阅备份仓库。
管理分支
在软件开发过程中,团队成员经常需要同时处理多个功能开发或缺陷修复任务,这可能导致代码冲突和版本管理混乱。为了解决这一问题,可以使用版本管理工具中的分支功能。
分支是版本管理工具中最常用的一种管理手段,使用分支可以把项目开发中的几项工作彼此隔离开来使其互不影响,当需要发布版本之前再通过分支合并将其进行整合。
在代码托管服务的Git仓库创建之初,通常会默认生成一条名为master(生产)的分支,一般作为最新版本分支使用,开发者可以随时手动创建自定义分支以应对实际开发中的个性场景。
团队可以通过合理规划分支策略,如master(生产)、develop(开发)、feature(功能)、release(发布)和hotfix(紧急修复)分支,可以确保每个开发任务独立进行,减少代码冲突,提高开发效率。
管理Tag
在软件开发过程中,团队成员经常需要回溯到特定的版本进行问题排查或功能回滚。然而,由于每次提交(commit)的ID是一长串编码,相对于我们熟知的“V1.0.0”这样的版本号,Commit ID不便于记忆,同时也不具备可识别性,这导致了在需要快速定位特定版本时的困难。为帮助团队成员能够更高效地进行版本管理和问题排查,Tag是Git提供的帮助团队进行版本管理的工具,用户可以使用Git Tag标记提交,从而将项目中的重要的版本管理起来,以便日后精确检索历史版本。
Tag会指向一个commit,无论后续版本怎么变化,它永远指向这个commit不会变化,相当于一个被永远保存的版本快照(只有手动删除时才会被剔除版本库)。
通过给重要的版本打上Tag,给它一个相对友好的名字(比如“ myTag_V1.0.0 ”、“首个商业化版本”),团队成员可以更容易记住和追述这些版本,从而提高工作效率。
有关更多信息,请参阅管理Tag。
仓库网络
在软件开发过程中,开发团队经常需要查看代码的提交历史,以了解代码的变更情况。然而,传统的文件页签中的历史记录仅能展示单个文件的变更,无法直观地展现不同提交之间的关系,这给团队成员理解代码变更的全貌带来了困难。为帮助开发更高效地进行代码审查和协作,代码托管提供了“仓库网络”,以流向图的形式展现了某条分支或Tag的整个提交(commit)历史(包括动作、时间、提交者、提交系统生成备注和手动填写备注)以及提交历史的关系。
相对于文件页签中的历史而言,提交网络具备展现提交之间关系的优势,帮助团队成员更直观地理解代码变更的全貌,提高协作效率。
有关更多信息,请参阅查看仓库网络。
版本管理
在软件开发过程中,团队成员经常需要对同一项目进行不同的修改和优化,这可能导致代码版本混乱,影响开发效率。为了解决这一问题,CodeArts Repo提供了版本管理功能,该功能可以记录、跟踪、维护和控制产品或系统系列的变更情况,包括但不限于分支、Tag、差异对比等。
通过使用版本管理,团队可以有效地管理代码变更,提高协作效率,确保项目的顺利进行。
有关更多信息,请参阅管理代码文件。
代码文件的差异对比
在软件开发过程中,团队成员经常需要对代码的不同版本进行比较,以确保代码质量和团队协作效率。然而,手动对比代码版本耗时且容易出错。“差异对比”可以帮助开发者直观地查看到各个代码版本之间的差异,是本服务提供的版本管理手段之一。
在仓库控制台中,可以对任意的分支、Tag、某次提交进行代码差异的对比,对比出的差异包括变更、新增、删除三个种类,不同种类的差异会以不同样式进行显示以方便辨识。
通过使用差异对比功能,开发者可以快速识别代码变更,提高代码审查和合并的效率。
Cherry-Pick
在软件开发过程中,团队成员经常需要从其他分支中引入特定的修复或功能,但又不希望引入该分支上的所有更改。当需要在本地合入其他分支的提交时,如果采用合并整个分支的方式,可能会引入不必要的代码变更,导致代码库混乱。用户可以使用git cherry-pick命令,该命令允许开发者将某一次提交取出,并将它覆盖到某个版本上,从而实现精准的代码变更引入。
有关更多信息,请参阅历史页签:查看分支或Tag版本的提交历史。
克隆或者下载代码仓到本地
在软件开发过程中,开发人员经常需要在本地计算机上进行代码修改,以便利用本地开发环境的便利性和灵活性。然而,当开发人员需要将本地修改的代码同步到云端代码托管服务时,可能会遇到同步过程复杂、效率低下的问题。云端代码版本和本地代码版本可以通过上传、克隆或者下载的操作在彼此间进行同步,代码托管提供了多种克隆或者下载方式,包括但不限于使用Git命令行工具、图形界面客户端等,以满足不同用户的需求,简化同步流程,提高开发效率。
有关更多信息,请参阅克隆/下载代码仓库到本地。
在线开发代码
在软件开发过程中,开发人员经常需要在不同的设备上进行代码编辑,但传统的开发环境限制了这一需求,导致代码修改不及时,影响开发效率。代码托管服务内置了IDE Online功能,支持用户在线编辑代码,用户可以在控制台修改代码,提升问题修复速度和操作的灵活性。
有关更多信息,请参阅在Repo编辑并创建合并请求。
解决代码冲突
在多人团队协作开发中,当多个开发者同时修改同一个文件时,可能会遇到代码提交冲突的问题,导致代码推送失败。代码托管支持解决代码冲突,保障团队开发的高效性。解决方法包括:
- 用户将远程代码仓库拉取到本地仓库的工作区,利用Git自动合并可以合并的修改,并手动解决冲突部分,然后通过add > commit > push的方式,再次提交代码。
- 用户也可以利用代码托管服务提供的在线冲突解决工具,直接在线解决冲突。
有关更多信息,请参阅解决合并请求的代码冲突。
关联工作项
在软件开发过程中,团队成员需要频繁地提交代码以实现新功能或修复bug,但如何确保这些提交与具体的工作任务准确关联,成为了项目管理中的一个挑战。代码托管服务可以将每一次代码提交(commit)关联到需求管理的工作项中,帮助开发者精确记录每一次修复bug、提交新特性时所对应的工作任务。
关联工作项还可以帮助项目管理者查看每一个需求、bug修复时,所涉及修改内容的提交人、提交内容等信息,从而提高项目透明度和管理效率。
在代码托管控制台中,对文件的任何操作在保存时都会要求必须填写一个提交信息才能保存,可以理解为控制台的每一次保存都是一次commit操作,其必填的提交信息对应了commit命令的-m内容,代码托管服务从-m(提交信息)中捕获关键字的方式来自动关联工作项,解决了代码提交与工作任务脱节的问题。
有关更多信息,请参阅可集成系统。
查看&评论提交记录
在团队协作开发软件时,开发人员经常需要回顾代码提交记录以追踪问题或理解代码变更的原因。然而,当团队成员众多且提交频繁时,找到特定的提交记录和理解其背景信息变得困难。代码托管服务支持查看提交历史的详细信息以及其涉及的文件变更。
用户可以在仓库的提交网络、仓库文件列表的历史页签中,查看提交历史的清单,单击某次提交历史可以进入查看此次提交提交人、提交号、父节点、此条提交下评论的数量、代码变更对。可以对提交内容进行评论,也可对评论内容进行跟帖。这不仅帮助团队成员快速定位问题,还促进了团队内部的沟通与协作。
有关更多信息,请参阅在仓库动态页查看提交历史。
配置消息通知
在使用代码仓库进行项目协作时,团队成员需要及时了解仓库的状态变化,以确保项目的顺利进行。然而,当仓库出现欠费冻结、被手动关闭或因冻结时间超过保留期而被彻底删除等情况时,团队成员可能无法及时获知,导致项目进度受阻。
代码托管支持通过消息通知,可以在仓库冻结、关闭、合并请求或删除等关键事件发生时,自动向指定的仓库成员发送邮件通知,确保信息的及时传达,帮助团队成员快速响应仓库状态变化,保障项目顺利进行。
有关更多信息,请参阅设置Repo的仓库和合并请求通知。
成员管理
在企业级项目管理中,为了确保代码仓库的安全性和协作效率,成员管理成为了一个关键环节。然而,当项目成员需要跨租户协作时,可能会遇到权限管理和成员邀请的复杂性问题,导致协作效率低下。
代码托管通过明确仓库成员来源于其所属项目的项目成员,并允许项目创建者所在租户邀请其他租户下的IAM账号加入项目,同时规定只有仓库创建者(所有者)和仓库管理员才能对仓库人员进行变动,其他人员仅能浏览仓库成员列表,可以跨租户成员管理,提高协作效率。
有关更多信息,请参阅管理Repo成员权限。
配置IP白名单
在企业日常运营中,为了保护敏感数据不被未授权访问,通常需要对仓库访问进行严格控制。然而,如果没有配置IP白名单,任何IP地址都可能尝试访问仓库,这将带来潜在的安全风险。
通过设置项目或者仓库的IP白名单,可以确保只有特定的IP地址能够访问仓库,从而提高安全性。
只有在白名单范围内的IP地址发起的访问才会被允许,其他所有IP地址的访问请求将被拒绝,从而大大增强了仓库的安全性。
有关更多信息,请参阅设置IP白名单。
审计日志
代码托管通过使用支持多维度查询的审计日志系统,可以根据操作时间、操作人、具体行为,以及行为所影响的分支、Tag等信息进行快速查询,有效提升问题排查效率和代码管理的安全性。
有关更多信息,请参阅审计日志。