云服务器内容精选

  • 新建评审意见 您可以在“代码”页签的“文件”和“提交”子菜单下,也可以在“合并请求”中“文件变更”子菜单下给待检视文件添加检视意见。 您可以在“合并请求”详情页“评审意见”下给待检视的合并请求添加评论,也可以在“代码”页签下的“提交”子菜单下给提交文件添加评论。 其中在“代码”页签的“文件”和“提交”子菜单下添加的检视意见和评论可以在“评审记录”页签下“源自Commit的评审记录”中查看。 在“合并请求”中“文件变更”子菜单下给待检视文件添加检视意见和在“合并请求”详情页“评审意见”中添加的评论可以在“评审记录”页签下“源自合并请求的评审记录”中查看。 在“代码”页签下“文件”子菜单,新建检视意见。 进入“文件”子菜单,单击“待评审文件”,单击代码行图标,在“文本框”输入评审意见,选择“严重程度”和“指派给”,如“严重程度”为“一般”,“指派给”为“MR创建者”,在下拉框选择“意见分类”和“意见模块”,单击“确定”完成检视意见添加。 图3 新建检视意见 在“代码”页签下“提交”子菜单,新建检视意见。 进入“提交”子菜单,单击“提交记录”下“待检视的文件”,单击代码行图标,在“文本框”输入评审意见,选择“严重程度”和“指派给”,如“严重程度”为“一般”,“指派给”为“MR创建者”,在下拉框选择“意见分类”和“意见模块”,单击“确定”完成检视意见添加。 图4 新建检视意见 在“合并请求”页签中“文件变更”子菜单下,新建检视意见。 进入“文件变更”子菜单,单击代码行图标,在“文本框”输入评审意见,选择“严重程度”和“指派给”,如“严重程度”为“一般”,“指派给”为“MR创建者”,在下拉框选择“意见分类”和“意见模块”,单击“确定”完成检视意见添加。 图5 新建检视意见 在“合并请求”页签中合并请求详情页,新建评论。 进入“合并请求”页签,单击“待检视的合并请求”,进入合并请求详情页。单击“评审记录”,在评审记录下输入评审意见,单击“确定”完成评论的添加。 在“提交”页面中,单击某个提交,切换“评论”界面,即可新建评论。 图6 新建评论
  • 检视代码、合并分支 开发人员发起合并请求。 开发人员Chris完成代码开发,确认无误后,即可发起合并请求,将功能分支合并到master中。 进入代码仓库,选择“合并请求”页签,单击“新建合并请求”。 源分支选择“Feature-Store”,目标分支选择“master”,单击“下一步”。 参照表3编辑合并请求详情。 表3 合并请求配置 配置项 配置建议 标题 输入“添加门店网络列表”。 合并人 单击,在弹框中勾选“Maggie”,单击“确定”。 审核人 单击,在弹框中勾选“Maggie”,单击“确定”。 单击“新建合并请求”完成合并请求的创建。 项目经理评审并完成代码合入。 本文档中,合并请求的评审人与合并人均是项目经理Maggie。因此Maggie可评审合并请求内容,并在评审通过后完成分支合入。 进入代码仓库后,选择“合并请求”页签,可找到由开发人员Chris创建的合并请求。 单击该请求,查看合并请求详情。 可在页面中留下评审意见。单击审核门禁中“通过”完成审核。 单击“合入”,将分支合入“master”。 如果发起分支合并请求时勾选了“合并后删除源分支”,分支“Feature-Store”将在分支合并完成后被删除。
  • 分布式版本控制系统 分布式版本控制系统的特点是每个客户端都是代码仓库的完整镜像,包括项目文件的变更历史。所有数据分布的存储在每个客户端,不存在中央服务器。可能有人会问,我们公司使用Git分布式存储工具,也有“中央服务器”啊?其实,这个所谓的“中央服务器”仅仅是用来方便管理多人协作,任何一台客户端都可以胜任它的工作,它和所有客户端没有本质区别,如下图所示。 常见的分布式版本控制系统为Git、Mercurial、Bazaar、Bitkeeper。 分布式版本控制系统的优点与缺点如下表所示。 表2 分布式版本控制系统描述 优点 缺点 版本库本地化,版本库的完整克隆,包括标签、分支、版本记录等。 支持离线提交,适合跨地域协同开发。 分支切换快速高效,创建和删除分支成本低。 学习成本高,不容易上手。 只能针对整个仓库创建分支,无法根据目录建立层次性的分支。
  • 集中式版本控制系统 集中式版本控制系统的特点是只有一台中央服务器,存放着所有研发数据,而其它客户端机器上保存的是中央服务器最新版本的文件快照,不包括项目文件的变更历史。所以,每个相关人员工作开始前,都需要从这台中央服务器同步最新版本,才能开始工作,如下图所示。 常见的集中式版本控制系统为CVS、VSS、SVN、ClearCase。 集中式版本控制系统的优点与缺点如下表所示。 表1 集中式版本控制系统描述 优点 缺点 操作简单,使用没有难度,可轻松上手。 文件夹级权限控制,权限控制粒度小。 对客户端配置要求不高,无需存储全套代码。 网络环境要求高,相关人员必须联网才能工作。 中央服务器的单点故障影响全局,如果服务器宕机,所有人都无法工作。 中央服务器在没有备份的情况下,磁盘一旦被损坏,将丢失所有数据。
  • Git客户端推送(以Git Bash为例) 在进行Git Bash客户端推送之前请确保已在代码托管服务中配置SSH密钥或HTTPS密码。 进入目标代码托管服务。 将本地仓库初始化为Git仓库,用于与代码托管仓库进行关联。 在您的仓库中打开Git Bash客户端,执行以下命令: git init 初始化成功如下图,此时当前文件夹已经是本地Git仓库了。 将本地仓库与代码托管仓库进行绑定。 进入代码托管仓库,获取仓库地址。 在本地使用remote命令,将本地仓库与代码托管仓库进行绑定。 git remote add 仓库别名 仓库地址 示例为: git remote add origin git@*****/java-remote.git #复制使用时注意换成您自己的仓库地址 一般用origin作为仓库别名,因为当您从远程仓库clone到本地时,默认产生的别名就是origin,当然您也可以使用任意别名。 如果提示仓库名重复,更换一个即可。 无回显即为绑定成功。 将代码托管仓库master分支拉取到本地仓库。 此步骤主要是避免冲突。 git fetch origin master #复制使用时 注意是否需要将origin替换为您仓库的别名 将本地代码文件提交到master分支。 依次执行: git add . git commit -m "您的提交备注" 下图为成功的执行。 将本地master分支与代码托管master分支进行绑定。 git branch --set-upstream-to=origin/master master #复制使用时 注意是否需要将origin替换为您仓库的别名 成功执行如下图所示,提示您已经将合并后的仓库放在工作区与版本库。 合并代码托管仓库与本地仓库的文件,并存储在本地。 git pull --rebase origin master #复制使用时 注意是否需要将origin替换为您仓库的别名 成功执行如下图所示,提示您已经将合并后的仓库放在工作区与版本库。 将本地仓库推送覆盖代码托管仓库。 因为之前已经进行了绑定,直接push即可。 git push 成功后,再直接拉取pull,验证代码托管仓库与本地仓库版本相同,如下图。
  • 实现原理 代码托管服务(CodeArts Repo)结合仓库的存储方式提供以下迁移方案: HTTP在线导入 通过HTTP协议直接将您的远程仓库导入到代码托管中,全程线上操作,但导入仓库的时长会受到网络条件及仓库容量的影响。 仓库容量相对较大的云端仓库推荐使用Git客户端推送的方式进行迁移。 Git客户端推送 通过使用Git客户端将本地仓库中的代码文件推送至代码托管服务。 将项目文件存放在本地计算机的用户,建议先将本地项目文件初始化成Git仓库,再使用Git客户端进行迁移。 新建仓库对于仓库容量相对较大的云端仓库,建议先将云端仓库克隆或下载到本地,再使用Git客户端进行迁移。
  • 分支操作 新建分支 Git新建分支的本质就是创建一个指向最后一次提交的可变指针,所以,Git分支的创建不是复制版本库的内容,仅仅是新建了一个指针,它以40个字符长度SHA-1字串形式保存在文件中。 1 #git branch branchName commitID 基于commitID即某一个版本号拉出新分支,如果没有commitID则基于当前分支的HEAD拉出新分支。 例如,新建feature分支,执行的命令为git branch feature,如下图所示。 切换分支 命令如下。 1 #git checkout branchName 例如,切换到feature分支,执行的命令为git checkout feature,如下图所示。 分支合并 无论哪种工作流都会涉及到分支合并(把一个分支中的修改整合到当前分支),主要有两种方法:三方合并(merge) 和衍合(rebase)。通过对同一种场景进行不同操作体会两种合并方法的区别。 场景:master分支新增了C4节点, hotfix分支新增了C3节点,现将hotfix分支合并到master分支: 三方包括hotfix新增节点C3,master新增节点C4,以及两者的共同祖先节点C2。这种合并操作简单,但新增合并节点C5,形成了环形,版本记录可读性差,如下图所示。 1 2 #git checkout master #git merge hotfix 衍合先将master分支新增节点C4以补丁形式保存在.git/rebase目录中,然后同步hotfix分支最新代码,再应用补丁C4’,如下图所示。 1 2 #git checkout master #git rebase hotfix 冲突解决 场景一:两个合并分支修改了同一行代码 解决方法: 分析哪种修改方法正确,手动合并。 提交修改。 场景二:文件被重命名为不同的名字 解决方法: 确认哪个名字是正确的,删除错误的。 提交修改。
  • 推送架构代码 打开本地框架代码,确保根目录名与云端创建的代码仓库名一致,在根目录下右键打开Git bash终端。 推送本地代码到云端。 在当前Git Bash终端依次输入如下命令: 初始化本地代码仓库,执行该命令后,在“D:/code/repo1/”下多了一个“.git”文件夹。 1 $ git init 关联云端代码仓库。 1 $ git remote add origin repoUrl 仓库地址如下图进入仓库详情页,单击”克隆/下载“,所示单击红色方框处获取。 推送代码到云仓库。 1 2 3 4 5 $ git add . $ git commit -m "init project" $ git branch --set-upstream-to=origin/master master $ git pull --rebase $ git push
  • 操作步骤 进入代码托管服务仓库列表页。 单击“新建仓库”按钮,跳转到“归属项目和仓库类型”页面。 “归属项目”下拉框单击“新建项目”,或选择已有的项目。“仓库类型”选择“模板仓库”,单击下一步 代码仓库必须挂到项目下,通过项目维度查看仓库看板。 如果账号下没有项目请在项目选择框中选择“新建项目”会先弹出“新建项目”页面,这时建立的项目是Scrum或IPD-自运营软件/云服务类。 如果在项目内新建仓库则默认选择该项目。 仓库类型选择“模板仓库”。 单击“下一步”按钮,跳转到“选择仓库模板”页面。 “选择模板”页面支持模糊查询,根据您的需求选中某个模板。 单击“下一步”按钮,进入“基本信息”页面,填写仓库基本信息。 表1 按模板新建仓库的参数说明 字段名称 是否必填 备注说明 代码仓库名称 是 请以字母、数字、下划线开头,名称还可包含点和连字符,但不能以.git、.atom或.结尾,限制200个字符。 描述 否 为您的仓库填写描述,限制2000个字符。 权限设置 否 自动创建代码检查任务(免费)。 仓库创建完成后在代码检查任务列表中,可看到对应仓库的检查任务。 说明: "将项目开发人员自动添加为该仓库成员" 功能下线,不再自动将项目经理和开发人员添加为仓库成员。仅默认将项目创建者、项目管理员加入仓库。 项目成员自动添加到仓库的功能,可基于成员组的成员动态同步能力实现。 是否公开 是 可选择 私有。 仓库仅对仓库成员可见,仓库成员可访问仓库或者提交代码。 公开只读。 仓库对所有访客公开只读,但不出现在访客的仓库列表及搜索中。 单击“确定”按钮,完成仓库新建。 按模板新建时,仓库的类型会根据选择的模板的仓库类型自动配置。 按模板新建的仓库将包含模板预置的仓库文件结构。
  • 查看仓库的统计信息 在仓库详情中的“仓库统计”页签,可以查看仓库的相关统计信息,详情如下: 仓库信息概要:主要显示Git库容量、LFS容量、分支数量、Tags数量、成员数量、提交数量。可选择分支,对仓库趋势图、贡献者统计、提交统计的统计范围产生影响。(不会影响仓库信息概要) 语言统计:显示仓库当前分支的各语言分布情况。 仓库趋势图:显示仓库当前分支的提交分布情况。 贡献者统计:统计当前分支中代码提交者们的贡献度(提交次数、代码行数)。 提交统计:按不同维度(每周、每天、每小时)统计代码提交活跃度。 开发者及以上权限可以触发代码贡献度统计与语言比例统计。 因资源限制,每个仓库一天可以统计10次。 每个用户一天可以统计1000次。 统计完成,将显示每一位用户在截止时间之前的全部新增、删除的代码行数量(“+”表示新增,“-”表示删除)。 merge(将两个或两个以上的开发历史合并在一起的操作)节点的提交均不被统计。 父主题: 使用代码托管仓库
  • 方式二:将Git仓库克隆到本地,再关联并推送到代码托管 当因为网络等原因,无法直接在线导入时,可以使用以下方法,将远程仓库克隆到本地,再关联、推送到代码托管中。 安装与配置Git客户端。 从源仓库地址下载仓库。 下面以GitHub为例: 在浏览器中打开并进入GitHub代码仓地址。 单击右侧“code”,选择“HTTPS”,单击右侧图标。 在本地打开Git Bash客户端,执行以下命令将仓库克隆到本地计算机,再使用cd指令进入仓库目录。 git clone --bare 源仓库地址 将本地仓库关联并推送到代码托管。 在代码托管服务中新建普通仓库,在“权限设置”里,不要勾选“允许生成README文件”。 进入1中新建的仓库详情页,单击“克隆/下载”,根据需要单击“用SSH克隆”或“用HTTPS克隆”,再单击按钮,取得仓库地址。 本示例中以HTTPS地址为例。 在本地源代码的根目录下,打开Git Bash客户端,执行以下命令将本地的仓库推送到新建的代码托管仓库中。 git push --mirror 新建的代码托管仓库的地址 指令执行时,会提示您输入代码托管仓库的HTTPS账号和密码,正确输入即可。(如何获取HTTPS账号、密码?) 如果您的源仓库有分支和标签,也会一并推送到代码托管仓库。 推送成功后,到代码托管仓库内验证迁移是否完整,如有问题请联系华为云技术支持。(如何浏览代码托管仓库?)
  • 方式一:在线导入 这种方式可以直接将您的远程仓库导入到代码托管中,全程在线完成,但导入速度会受到源仓库的网络条件的影响。 在代码托管仓库列表页,单击“新建仓库”旁的,在扩展框中选择“导入外部仓库”,弹出“填写外部仓库信息”页面。 填写“源仓库路径”,设置“源仓库访问权限”,如果源仓库是开源库(公仓),请勾选“不需要用户名/密码”,如果源仓库是私有仓库,请勾选“需要用户名/密码”。 单击“下一步”,进入“创建仓库”页面,填写仓库基本信息。 单击“确定”按钮,完成仓库导入,跳转到仓库列表页。 详细操作可参考导入外部仓库。
  • 什么是HTTPS密码 当您需要将代码推送到代码托管仓库或从代码托管仓库拉取代码时,代码托管仓库需要验证您的身份与权限,HTTPS是对代码托管服务进行远程访问的身份验证方式。 HTTPS用户名 包含租户名/IAM用户名,请完整输入,如果需要将用户名添加到URL中,请将'/'转义成 '%2F'。 当主账号(账号和用户名一样)设置HTTPS密码时可以只写账号。 HTTPS密码 请输入8到32位密码,数字、大小写字母及特殊字符至少包含三种,不能与用户名或者倒序的用户名相同。 HTTPS密码是HTTPS协议方式下载/上传时使用的用户凭证。每个开发者,只需要设置一次密码,与仓库无关。 HTTPS密码要妥善保存,不要外传,并定期更换,以免出现安全风险。如果忘记用户名密码,单击修改,设置新的HTTPS密码即可。 HTTPS密码默认使用华为云登录密码,支持密码实时同步,您也可以选择“自行设置密码”来修改密码。
  • 验证HTTPS密码是否生效 当设置好HTTPS密码后,您可以在客户端对您有访问权限的仓库进行一次HTTPS-clone操作,会弹出对话框要求你输入账号、密码,填写后克隆成功,则说明密码设置成功。 您也可以使用HTTPS协议设置免密码提交代码,请参考如何使用HTTPS协议设置免密码提交代码? 在使用华为云登录密码进行HTTPS克隆代码时,仅支持三段式的IAM账号密码认证,对于租户账号的两段式的华为账号方式登录的密码不支持。 账号需要有“编程访问”权限才能正常认证通过。
  • 响应示例 状态码: 200 OK { "result" : { "id" : 2111886200, "type" : "DiffNote", "body" : "检视意见内容", "author" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "created_at" : "2023-06-01T17:05:12.000+08:00", "updated_at" : "2023-06-01T17:05:12.000+08:00", "system" : false, "noteable_id" : 19387, "noteable_type" : "MergeRequest", "resolvable" : true, "is_reply" : true, "noteable_iid" : 2, "discussion_id" : "8bbe6d4e797169c4c1ce56507fdf1abc11f95601", "project" : "DevOpsqlcylxm00004/project-test", "diff_file" : "7", "diff" : "@@ -0,0 +1,0 @@\n+7", "archived" : false, "review_categories" : "regulations", "review_categories_cn" : "编程军规问题", "review_categories_en" : "Regulations", "review_modules" : "aaa,bbb", "severity" : "suggestion", "severity_cn" : "建议", "severity_en" : "Suggestion", "assignee" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "proposer" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "position" : { "base_sha" : "973bcc0211c32dbaa8473561c6767f74e1a81471", "start_sha" : "973bcc0211c32dbaa8473561c6767f74e1a81471", "head_sha" : "f5bf0230f9b996ed6c0d64d2b2fef789d91b164c", "old_path" : "7", "new_path" : "7", "position_type" : "text", "new_line" : 1 }, "resolved" : false, "is_outdated" : false }, "status" : "success" }