
# Fork仓库
#### Fork仓库的应用场景
Fork仓适用于大型项目、包含多个子项目时的开发场景。
Fork基于某个仓库，可以镜像出一个相同的仓库，并能将镜像仓库中的修改请求合并回源仓库。
在合并未发生时，镜像仓和源仓库的修改都不会对彼此产生影响。
如下图所示，复杂的开发过程都只发生在镜像仓中，并不会影响到项目版本仓库(源仓库)，只有确认完成的新特性才会请求合并回项目版本仓库。因此，Fork是一种团队协作模式。
![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002346964600.png)
#### Fork仓库与导入外部仓库的区别
Fork仓库与导入外部仓库都是复制仓库，但它们的主要区别在于，操作后源仓库与复制出仓库的联动关系不同，详细如下：
- **Fork仓库**
  - Fork仅应用于代码托管平台内的仓库间复制。
  
  - Fork仓库时，会基于源仓库的当前版本复制出一个内容相同的副本仓库，用户在副本仓库的修改，可以申请合并（可以理解为一种跨仓库的分支合并）回源仓库，但副本仓库不能再获取源仓库的更新。
   
- **导入外部仓库**
  - 导入外部仓库不仅可以将其它版本管理平台的仓库进行导入（主要针对基于Git、SVN存储的托管平台），也可以导入代码托管服务自己的仓库。
  
  - 导入外部仓库时，也会基于源仓库的当前版本复制出一个内容相同的副本仓库，所不同的是，副本仓库不能向源仓库提交合并申请，但是副本仓库可以随时拉取源仓库的默认分支，以起到获取最新版本的作用。
   
 
#### 约束限制
在Fork代码仓前，用户需要具备Fork代码仓的权限，请提前参考[配置代码仓库级的权限](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0066.html)配置。
#### Fork仓库的操作步骤
1. 进入代码托管服务仓库列表页。单击目标仓库名称，进入目标仓库。
2. 单击页面右上角的"Fork"按钮，弹出**"Fork代码仓库"** 窗口，参考下表填写参数。
   
   表1Fork代码仓库参数填写 
   | 参数          | 说明                                                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|
   | 项目名         | 该参数表示新仓库的目标归属项目，用户可以下拉框选择已加入的项目名称。                                                                                                                                                                                                                                                                                                                                                                 |
   | 代码组路径       | 非必填。该参数表示新仓库的目标代码组路径，用户可以下拉框选择代码组路径。                                                                                                                                                                                                                                                                                                                                                               |
   | 仓库名         | 该参数表示新仓库的名称，请以大小写字母、数字、下划线开头，可包含大小写字母、数字、中划线、下划线、英文句点，但不能以.git、.atom或.结尾。代码总路径长度（代码组名称和仓库名称总长度）不超过256字符。                                                                                                                                                                                                                                                                                           |
   | 可见范围        | 该参数表示源仓库的可见范围，包括两个选项： - 私有（仓库仅对仓库成员可见，仓库成员可访问仓库或者提交代码）。    - 公开。包含三个选项："项目内成员只读"、"租户内成员只读"和"所有访客只读"。   |
   | 同步源仓库提交规则设置 | 非必填。该参数表示是否要同步源仓库提交规则设置。勾选表示同步源仓库提交规则设置，不勾选则表示不会同步源仓库提交规则设置，默认勾选。 用户可进入"设置 \> 策略设置 \> 提交规则"查看源仓库的规则设置，再确定是否需要勾选此参数。                                                                                                                                                                                                                                         |
      
   
   
3. 填写完此参数表格后，单击"确定"按钮，即可完成Fork仓库操作。如下图所示，Fork成功后，自动跳转到目标项目下的代码仓（组）页面，"Test"为Fork的代码仓。 
   图1代码仓库Fork成功的页面
   ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002510080777.png "点击放大")
   
   
   
 
#### 查看当前仓库的Fork情况
1. 进入代码托管服务仓库列表页。
2. 单击源仓库名称，进入源仓库。
3. 如下图所示，单击页面右上角"Fork"旁的次数按钮，可查看Fork仓库列表。当前源仓库仅一次被Fork记录，单击"Fork仓库名称"列的名称可进入Fork仓库的"代码"页。 
   ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002481392152.png "点击放大")
   
   
 
#### 如何将Fork仓库中的修改合入源仓库
1. 进入代码托管服务仓库列表页。
2. 单击Fork仓库名称，进入Fork仓库。
3. 单击"合并请求"，切换到合并请求页签。
4. 单击"新建合并请求"，弹出**"新建合并请求"** 页面，选择要合并的"源分支"和"目标分支"，填写"标题"和"描述"，单击"新建合并请求"，完成合并请求的创建。
   
   设置变更主题为"test"。单击![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002517887733.png)，可复制当前的变更主题名称，单击![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002517807717.png)，可取消当前的变更主题关联。
   使用变更主题时，需要注意以下事项：
   - 变更主题不支持半角引号和全角引号，字符长度不超过50。
   
   - 一个变更主题可管理多个合并请求。例如，当用户希望为其他合并请求关联变更主题"test"时，可以在创建新的合并请求时，右侧填写变更主题为"test"。
    
   ![](https://support.huaweicloud.com/usermanual-codeartsrepo/public_sys-resources/caution_3.0-zh-cn.png)
   跨仓库的合并请求属于源仓库，只能在源仓库的"合并请求"页面中查看。在Fork仓库（即请求发起方仓库）中无法看到这些合并请求，因此选择的检视人、评审人、审核人及合并人均需为源仓库的成员。
   
   
![](https://support.huaweicloud.com/usermanual-codeartsrepo/public_sys-resources/caution_3.0-zh-cn.png)
- 当用户在创建一个"所有访客只读"的公开仓时，如果用户的"代码仓库名称"或者"描述"包含敏感词汇，包括中文和英文语法，将会新建仓库失败，并且在"新建仓库"页面的右上角提示"用户所提交的内容可能存在违反法律法规的内容，请修改后重新提交。"
- 如果用户在尝试修改设置为'所有访客只读'的公开"仓库描述"或者"分享标题"时使用了敏感词汇，那么修改操作将会失败。
- 如果用户在"README.md"文件输入敏感词汇，进入此代码仓的"仓库首页"，右上角会显示"审核状态：不通过"，即当前仓库仅项目内成员可见，需要修改"README.md"文件内容。
- 在新建代码仓库后，仅有创建者能够访问该仓库。其他项目成员需要手动添加到仓库中，并分配相应的权限。因此，用户需要根据需求，手动为代码仓库添加成员并为新增成员配置访问权限。
- 如果用户的仓库是"所有访客只读"，当用户新建或者修改合并请求"标题"时，且标题内容包含违规词汇，新建或者修改合并请求标题将失败，并在右上角报错提示"合并请求标题存在违反法律法规的内容，请修改后重新提交。"
- 如果用户的仓库是"所有访客只读"，当用户的"描述"包含违规词汇或者图片，会审核不通过，在合并请求标题右侧将显示"标题或描述内容审核不通过，请及时修改，否则合并请求仅项目内成员可见。"并且此合并请求将不对其他成员展示，修改并合规后，将正常展示此合并请求信息。
- 如果用户的仓库是"所有访客只读"，当用户的"评审意见"包含敏感词汇或者图片，将会在评价所在行显示"审核不通过"。
 
