
# HE2E DevOps实践之管理代码
#### 背景介绍
本文以"DevOps全流程示例项目"为例，介绍如何在项目中进行代码开发。
开展实践前，需要先完成[创建项目](https://support.huaweicloud.com/bestpractice-projectman/codeartsreq_practice_1034.html)。
本样例项目中采用分支来进行代码的开发。首先由开发人员Chris在代码仓库中创建分支，并进行代码开发；然后开发人员Chris在代码仓库中提交分支合并请求，项目经理Maggie评审通过后合并分支至主干。
#### 创建分支
1. 将master分支设置为受保护分支（本文档中由项目经理Maggie操作）。 
   1. 进入"凤凰商城"项目，单击导航"代码 \> 代码托管"，找到代码仓库"凤凰商城"。
   
   2. 单击仓库名称进入代码仓库，选择"设置"页签。在导航中单击"策略设置 \> 保护分支"。
   
   3. 单击"新建保护分支"，参照下表在弹框中完成配置，单击"确定"保存。
      表1新建保护分支配置 
      | 配置项       | 配置建议                                                                                                         |
      |:---|:---|
      | 选择需要保护的分支 | 选择"master"。                                                                                                  |
      | 能推送       | 根据需要配置，本文档中保持默认配置。                                                                                           |
      | 能合并       | 根据需要配置，本文档中保持默认配置。                                                                                           |
      | 成员        | 根据需要勾选"能推送"、"能合并"，并在下拉列表中选择成员。 本文档中保持默认配置。 |
         
      ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/public_sys-resources/note_3.0-zh-cn.png)
      如果页面中已存在保护分支"master"，可单击![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002254808565.png)，根据需要修改保护分支配置。
      
   
   
   
   
2. 创建功能分支（本文档中由开发者Chris操作）。 
   1. 进入"凤凰商城"项目，在代码托管页面中找到仓库"phoenix-sample"。
   
   2. 单击仓库名称进入代码仓库，在"代码"页签中单击"分支"。
   
   3. 单击"新建分支"，参照[表2]输入分支信息，单击"确定"保存。
       表2新建分支 
      | 配置项   | 配置建议                |
      |:---|:---|
      | 基于    | 选择"master"。         |
      | 分支名称  | 输入"Feature-Store"。  |
      | 关联工作项 | 选择"作为用户可以查询所有门店网络"。 |
         
      
   
   
   
   
 
#### 修改、提交代码
1. 单击导航"工作 \> 项 \> 需求管理"，选择"迭代"页签。 
   在迭代项中找到Task"前端展示 - 添加门店网络菜单"，将Task的状态修改为"进行中"。
   
   
2. 单击导航"代码 \> 代码托管"，找到仓库"phoenix-sample"。
3. 单击仓库名称进入代码仓库，选择"代码"页签。
4. 单击文件列表上方的"master"，在下拉列表中选择分支"Feature-Store"。
5. 在文件列表中找到"vote/templates/store-network.html"并打开。
6. 单击![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002219848876.png)，根据Story添加门店地址，并在页面底部文本框中输入备注信息"添加门店列表"，单击"确定"。
   
   ```
   <ul>
   <li>A分店：E机场1号航站楼出发层靠右直行123米右侧</li>
   <li>B分店：F区G路456号</li>
   <li>C分店：H区J街789号</li>
   <li>D分店：K区L大道K大楼西侧</li>
   </ul>
   ```
   
   
7. 以同样方法打开并编辑"/vote/templates/index.html"。
   
   在179行添加菜单"门店网络"，输入提交信息"fix #xxxxxx 前端展示 - 添加门店网络菜单"，单击"确定"。
   其中"#xxxxxx"是Task"前端展示 - 添加门店网络菜单"的编号，在工作项列表中获取，实践中修改为实际Task的编号。
   ```
   <li class="nav-item"> <a href="store-network" class="nav-link">门店网络</a> </li>
   ```
   
   
8. 单击导航"工作项 \> 需求管理 \> 迭代"，在迭代项中找到Task"前端展示 - 添加门店网络菜单"。 
   - 单击Task名称，在详情页中可看到状态自动变为"已解决"。
   
   - 选择"关联"页签，在"代码提交记录"下可看到一条记录，记录的描述与[上一步]中输入的提交信息相同。
     图1代码提交记录   
     ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002219689036.png "点击放大") 
   
   
   
   
 
#### 检视代码、合并分支
1. 开发人员发起合并请求。 
   开发人员Chris完成代码开发，确认无误后，即可发起合并请求，将功能分支合并到master中。
   1. 进入代码仓库，选择"合并请求"页签，单击"新建合并请求"。
   
   2. 源分支选择"Feature-Store"，目标分支选择"master"，单击"下一步"。
   
   3. 参照[表3]编辑合并请求详情。
       表3合并请求配置 
      | 配置项 | 配置建议                                                                                                                     |
      |:---|:---|
      | 标题  | 输入"添加门店网络列表"。                                                                                                            |
      | 合并人 | 单击![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002254688745.png)，在弹框中勾选"Maggie"，单击"确定"。 |
      | 审核人 | 单击![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002219689044.png)，在弹框中勾选"Maggie"，单击"确定"。 |
         
      
   
   4. 单击"新建合并请求"完成合并请求的创建。
   
   
   
   
2. 项目经理评审并完成代码合入。 
   本文档中，合并请求的评审人与合并人均是项目经理Maggie。因此Maggie可评审合并请求内容，并在评审通过后完成分支合入。
   1. 进入代码仓库后，选择"合并请求"页签，可找到由开发人员Chris创建的合并请求。
   
   2. 单击该请求，查看合并请求详情。
   
   3. 可在页面中留下评审意见。单击审核门禁中"通过"完成审核。
   
   4. 单击"合入"，将分支合入"master"。
      ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/public_sys-resources/note_3.0-zh-cn.png)
      如果发起分支合并请求时勾选了"合并后删除源分支"，分支"Feature-Store"将在分支合并完成后被删除。
      
   
   
   
   
 
