Azure DevOps分支合并报Access control list not in canonical form错误如何解决?
Azure DevOps跨分支合并提示
Access control list not in canonical form错误的排查与解决方案 该错误本质是Azure DevOps对应仓库/分支的访问控制列表存在格式异常,通常由权限重复配置、权限规则冲突、无效残留条目导致。
排查步骤
- 确认操作账号权限:检查当前账号是否同时拥有源分支和目标分支的贡献者及以上权限,排除权限交叉冲突导致的ACL识别异常
- 检查分支权限配置:进入对应代码库的「项目设置 - 仓库 - 权限」页面,分别查看源分支、目标分支的权限条目,排查是否存在重复的用户/组权限配置、同一个身份同时配置了允许和拒绝的冲突规则
- 检查权限继承状态:确认分支是否开启了从父级仓库继承权限,开启继承后又手动配置了同身份的重复权限,大概率会触发ACL格式异常
- 排除前端缓存问题:退出当前Azure DevOps账号,清理浏览器缓存后重新登录重试,排除前端权限缓存异常导致的误报
解决方案
- 删除冲突权限条目:排查到同一用户/组存在多条重复权限配置、或者同身份同时有允许和拒绝的冲突规则时,直接删除所有冲突条目后重新配置一次权限即可
- 重置权限继承规则:先关闭分支的权限继承,选择「取消继承并复制现有权限」,手动删除所有无效残留的权限条目后,再重新开启继承同步父级仓库的正确权限
- 命令行重置ACL配置:如果页面操作无法解决,可使用Azure CLI的
az devops security permission reset命令重置对应代码库/分支的ACL配置,命令示例如下(其中命名空间ID为Git仓库的固定值,无需修改):az devops security permission reset --namespace-id "2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87" --subject "<用户/组的唯一标识ID>" --token "repoV2/<组织ID>/<项目ID>/<仓库ID>/refs/heads/<分支名>" - 权限校验测试:完成配置修正后,先用项目管理员账号尝试执行一次合并操作,确认问题解决后再恢复普通账号的对应权限。
内容的提问来源于stack exchange,提问作者Joe Miles
相关产品推荐
相关产品推荐

