背景
在使用 GitHub Enterprise Importer 导入存储库时,内部服务会将该存储库的 Git 数据推送到 GitHub,并将 refs 批处理以提升性能。 这引入了一种可能的情况,即针对推送 refs 的组织级别或企业级规则集的评估可能会超时,从而导致整个存储库迁移失败。
由于 GitHub Enterprise Importer 标记其 Git 推送为迁移操作,因此可以创建规则集绕过,这些规则集仅适用于存储库迁移,而不适用于其他执行组件。 这可以防止规则集评估超时并导致迁移失败。
“始终允许”与“例外”
规则绕过分为两种类型:“始终允许”和“豁免”。 它们的区别很微妙,但对于存储库迁移的情况而言却很重要。
| 模式 | 行为 |
|---|---|
| 始终允许 | 规则集将被评估,并提示所选参与者规避 |
| 豁免 | 不会评估规则集,也不会显示绕过提示 |
Git 迁移中的关键区别不是规则集是否会通过或失败(“始终允许”已然足够),而是是否对规则集进行评估(需要考虑“豁免”以便绕过)。
添加旁路
以下步骤逐步讲解如何配置迁移所需的规则集绕过。 你需要组织管理员或企业管理员权限才能编辑相应的规则集。
-
在组织的设置中,展开“ 存储库 ”部分,然后导航到 “规则集”。
-
导航到要更新的规则集。 在 “绕过列表 ”部分中,你将看到一个空列表或已配置的任何绕过。
-
如果绕过列表中不存在 存储库迁移 ,请单击“ 添加绕过”。 此时会显示一个下拉列表,其中列出了可用的绕过执行组件;选中 存储库迁移旁边的框,请注意,该条目显示在旁路列表中,默认模式为 “始终允许”。
-
单击存储库迁移条目上的 “···” 菜单。 你将看到两个模式选项和一个删除操作。 选择“豁免”****。 不要将模式设置为始终允许,因为如上所述,始终允许的绕过仍允许评估通过,这会导致超时。旁路列表现在显示存储库迁移模式为豁免。
-
滚动到规则集页面底部,然后单击“ 保存更改”。 旁路功能会立即生效,以便随后继续进行迁移操作。
安全性和副作用
如上所述,GitHub Enterprise Importer 使用特定路径推送 Git 数据,存储库迁移 的绕过功能仅针对此路径——普通用户或 Git 推送到现有存储库的路径不能通过 存储库迁移 绕过规则集。
建议在运行迁移期间,保留所有存储库迁移的绕过机制。 迁移完成后,离开旁路不会带来任何安全风险。