
# 开发代码
代码托管服务提供基于Git的在线代码管理服务，包括代码克隆/提交、分支管理等功能。
本实践中采用分支来进行代码的开发。分支是用来将特性开发并行独立出来的工具，使用分支意味着把工作从开发主线上分离开来，以免影响开发主线。
在创建代码仓库时，会有一个默认分支"master"，即主线。为了保证凤凰商城的稳定运行，需要有一个稳定且持续可用的master。因此，开发人员不直接在master分支上进行代码开发，而是统一采用功能分支+合并请求的方式，并且每一个功能分支的代码，必须经过团队的其他成员评审后，才可以进行合并。
本章节介绍如何通过分支完成"门店网络查询功能"的开发代码。
#### 创建需求分支
开发人员Chris在仓库中创建一个需求分支，用于开发新需求的代码。
1. 进入项目"凤凰商城"，单击导航"代码 \> 代码托管"，进入代码托管服务。
2. 单击代码仓库"phoenix-sample"，进入仓库。
3. 选择"代码 \> 分支"页签，单击"新建分支"，在弹框中配置以下信息，单击"确定"。 
   表1新建分支 
   | 配置项      | 示例              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|:---|
   | 基于       | master          | 选择已有的分支。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 分支名称     | Feature-Store   | 分支的名称，最长200个字节。 - 不支持以"- "、"."、"refs/heads/"、"refs/remotes/"开头。  - 不支持空格、"\["、"\\"、"\<"、"\~"、"\^"、":"、"?"、"\*"、"!"、"( )"、"'"、"""、"\|"等特殊字符。  - 不支持以"."、"/"、".lock"结尾。   |
   | 关联Req工作项 | 前端展示 - 添加门店网络菜单 | 分支关联的工作项，选择已有的工作项。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      
   页面提示操作成功，页面自动跳转至"文件"页面，页面中显示分支"Feature-Store"。
   图1分支"Feature-Store"   
   ![](https://support.huaweicloud.com/bestpractice-devcloud/zh-cn_image_0000002353170250.png)
   
   
 
#### 修改并提交代码
开发人员Chris在需求分支中完成代码的开发。
1. 在代码仓库"phoenix-sample"中的分支"Feature-Store"中，找到"vote/templates/store-network.html"并打开。
2. 单击![](https://support.huaweicloud.com/bestpractice-devcloud/zh-cn_image_0000001276783880.png)，添加以下代码，并在页面底部文本框中输入提交信息"添加门店列表"，单击"确定"。
   
   ```
   <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>
   ```
   图2提交代码   
   ![](https://support.huaweicloud.com/bestpractice-devcloud/zh-cn_image_0000002286279166.png "点击放大")
   保存成功，页面中显示修改后的代码。
   
   
3. 以同样方法打开并编辑"/vote/templates/index.html"。
   
   在179行添加以下代码，输入提交信息"fix #*xxxxxx* 前端展示 - 添加门店网络菜单"，单击"确定"。其中，"xxxxxx"是Task"前端展示 - 添加门店网络菜单"的编号。
   ```
   <li class="nav-item"> <a href="store-network" class="nav-link">门店网络</a> </li>
   ```
   保存成功，页面中显示修改后的代码。
   
   
4. 查看提交记录。 
   1. 单击导航"工作项 \> 需求管理"，进入需求管理服务。
   
   2. 在"工作项"页签中找到Task"前端展示 - 添加门店网络菜单"，Task的状态已自动更新为"已解决"。
   
   3. 单击Task标题打开详情页。
   
   4. 选择"关联"页签，在"代码提交记录"下可看到一条记录，记录的描述与[3]中输入的提交信息相同。
      图3代码提交记录   
      ![](https://support.huaweicloud.com/bestpractice-devcloud/zh-cn_image_0000001327223869.png "点击放大") 
   
   
   
   
 
#### 合并代码
开发人员Chris在完成代码开发与自测后，提交分支合并请求，项目经理Maggie审核合并请求后完成合入。
1. Chris提交合并请求。 
   1. 在代码仓库"phoenix-sample"中选择"合并请求"页签，单击"新建合并请求"。
   
   2. 源分支选择"Feature-Store"，目标分支选择"master"。
   
   3. 参照下表编辑合并请求详情。
      表2合并请求配置 
      | 配置项  | 示例            | 说明                |
      |:---|:---|:---|
      | 源分支  | Feature-Store | 合并请求的源分支。         |
      | 目标分支 | master        | 合并请求的目标分支。        |
      | 标题   | 添加门店网络列表      | 合并请求的标题，最多255个字符。 |
      | 合并人  | Maggie        | 完成合入代码操作的成员。      |
      | 审核人  | Maggie        | 审核合并请求的成员。        |
         
      
   
   4. 单击"确认"完成合并请求的创建。 新建成功，页面中显示合并请求的详情。
      
   
   
   
   
2. Maggie审核合并请求。 
   1. 进入代码仓库"phoenix-sample"，选择"合并请求"页签，可找到由开发人员Chris创建的合并请求。
   
   2. 单击该请求，查看合并请求详情。
   
   3. 可在页面中留下评审意见。单击入库审核门禁中"通过"完成审核。
      图4审核门禁   
      ![](https://support.huaweicloud.com/bestpractice-devcloud/zh-cn_image_0000002541844523.png "点击放大") 
   
   4. 单击"合入"，将分支合入"master"。 合并请求状态变成"已合并"，完成合入。
      
   
   
   
   
 
 #### 更新Dockerfile中npm全局依赖安装版本
1. 进入项目"凤凰商城"，单击导航"代码 \> 代码托管"，选择代码仓库"phoenix-sample"。
2. 选择分支"master"，打开文件"result/Dockerfile"，查看第6行代码是否如下图所示。 
   图5result/Dockerfile   
   ![](https://support.huaweicloud.com/bestpractice-devcloud/zh-cn_image_0000002571559092.png "点击放大")
   如果是，使用以下代码替换。
   ```
   RUN npm install -g nodemon@3.1.11
   ```
   
   
3. 完成代码替换后，在页面底部文本框中输入提交信息并单击"确定"。
 
