Skip to main content

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

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

背景

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

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

“始终允许”与“例外”

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

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

Git 迁移中的关键区别不是规则集是否会通过或失败(“始终允许”已然足够),而是是否对规则集进行评估(需要考虑“豁免”以便绕过)。

添加旁路

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

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

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

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

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

  5. 滚动到规则集页面底部,然后单击“ 保存更改”。 旁路功能会立即生效,以便随后继续进行迁移操作。

安全性和副作用

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

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