Skip to main content

为存储库迁移设置规则集旁路

在迁移存储库GitHub Enterprise Importer时,组织级和企业级规则集的评估可能导致 Git 推送失败,除非在豁免模式下将存储库迁移添加到例外列表中。

背景

在使用 GitHub Enterprise Importer 导入存储库时,内部服务会将该存储库的 Git 数据推送到 GitHub,并将 refs 批处理以提升性能。 这里将介绍一种可能的情况,即根据推送的引用评估组织级别或企业级规则集可能会超时,从而导致整个存储库迁移失败。

由于 GitHub Enterprise Importer 标记其 Git 推送为迁移操作,因此可以创建规则集绕过,这些规则集仅适用于存储库迁移,而不适用于其他执行组件。 这可以防止规则集评估超时并导致迁移失败。

“始终允许”与“例外”

规则绕过分为两种类型:“始终允许”和“豁免”。 它们的区别很微妙,但对于存储库迁移的情况而言却很重要。

模式行为
始终允许规则集将被评估,并提示所选参与者规避
豁免系统不会评估规则集,也不会显示绕过提示

在 Git 迁移方面的关键区别不是规则集是通过还是未通过(在该种情况下“始终允许”已然足够),而是是否已评估规则集(需要“豁免”绕过)。

添加旁路

以下步骤逐步介绍如何配置迁移所需的规则集绕过。 你需要组织管理员或企业管理员权限才能编辑相应的规则集。

  1. 在组织的设置中,展开“ 存储库 ”部分,然后导航到 “规则集”。

  2. 导航到要更新的规则集。 在 “绕过列表 ”部分中,你将看到一个空列表或已配置的任何绕过。

  3. 如果绕过列表中不存在 存储库迁移 ,请单击“ 添加绕过”。 此时会显示一个下拉列表,其中列出了可用的绕过执行组件;选中 存储库迁移旁边的框,请注意,该条目显示在旁路列表中,默认模式为 “始终允许”。

  4. 单击存储库迁移条目上的 “···” 菜单。 你将看到两个模式选项和一个删除操作。 选择“豁免”。 不要将模式设置为“始终允许”,因为如上所述,“始终允许”绕过仍允许评估,而这会导致超时。旁路列表现在显示模式为“豁免”的“存储库迁移”。************

  5. 滚动到规则集页面底部,然后单击“ 保存更改”。 对于后续迁移运行,绕过会立即生效。

安全性和副作用

如上所述,GitHub Enterprise Importer 使用特定路径推送 Git 数据,存储库迁移 的绕过功能仅针对此路径——普通用户或 Git 推送到现有存储库的路径不能通过 存储库迁移 绕过规则集。

建议在运行迁移期间,保留所有存储库迁移的绕过机制。 迁移完成后,离开旁路不会带来任何安全风险。