Azure DevOps Wiki如何无需频繁删除.order文件保证文章字母排序
解决方案
方案1:配置服务端预接收Git钩子(优先推荐)
Azure DevOps支持给代码仓库配置服务端预接收钩子,你可以给你的Wiki对应的Git仓库配置该规则:
- 编写校验逻辑:检测所有待推送的提交中,是否包含你指定要保持字母排序的目录下的
.order文件 - 只要检测到该类文件存在,直接拒绝本次推送,同时返回自定义提示:「指定目录禁止自定义排序,不允许提交
.order文件」 - 该方案可以从根源上拦截
.order文件进入仓库,不会产生任何多余的提交记录,用户在Web端拖拽调整该目录文章顺序后尝试保存时也会直接报错。
方案2:精细化配置目录权限
你可以针对需要固定排序的目录单独配置权限:
- 进入Wiki对应的Git仓库的权限设置页面
- 对目标目录,只给极少数需要做内容维护的管理员开放编辑权限,普通用户仅授予读取权限
- 没有编辑权限的用户无法拖拽调整该目录下的文章顺序,自然不会触发
.order文件的自动生成 - 如果需要进一步避免有权限的管理员误操作,可以和方案1的预接收钩子搭配使用。
方案3:推送触发式自动清理(仅适用于无法配置预接收钩子的场景)
如果你没有权限配置服务端钩子,可以把原来的定时运行的流水线调整为推送触发:
- 每次有新的提交推送到Wiki仓库时,流水线自动运行
- 仅当检测到目标目录下存在
.order文件时,才执行删除操作 - 提交时使用
git commit --fixup [对应触发提交的哈希值]的方式生成提交记录,后续可以定期用git rebase -i --autosquash合并这类自动提交,减少无效提交对提交历史的干扰。
补充说明:
.gitignore无法阻止ADO生成.order文件的原因是,ADO Web端的Wiki编辑操作是直接在服务端操作仓库的,不会遵循本地配置的.gitignore规则,所以该方法本身不适用该场景。
内容的提问来源于stack exchange,提问作者HelpfulProgrammer
相关产品推荐
相关产品推荐

