Azure DevOps能否在创建PR时强制提交信息包含Work Item ID?
强制提交信息包含Work Item ID的实现方案
需求明确
需要让开发人员提交代码时,必须在提交信息里带上对应Work Item ID,要求格式比如:
fix: fixes bug #123feat: implements #124
目前仅做到关联工作项但没写入提交信息,得靠正则验证把这条规则强制执行。
具体实现步骤
1. 用Git钩子做前置验证
Git的commit-msg钩子可以在提交完成前检查信息格式,刚好用来实现这个强制规则。
2. 写对应的正则规则
根据需求设计匹配正则,确保提交信息开头是fix:或feat:,并且包含#加数字的Work Item ID:
^(fix|feat): .*#\d+$
简单解释:
^(fix|feat):限定提交信息必须以fix:或feat:开头.*兼容中间的任意描述文本#\d+$确保存在#后跟一串数字的Work Item ID
3. 编写钩子脚本
修改项目里的.git/hooks/commit-msg文件(如果没有就新建),粘贴以下Shell脚本:
#!/bin/sh # 读取提交信息文件内容 COMMIT_MSG=$(cat "$1") # 定义验证规则 VALIDATION_REGEX='^(fix|feat): .*#\d+$' # 检查是否匹配规则 if ! echo "$COMMIT_MSG" | grep -qE "$VALIDATION_REGEX"; then echo "❌ 提交信息不符合要求!必须包含Work Item ID,正确格式示例:" echo "fix: fixes bug #123" echo "feat: implements #124" exit 1 # 终止提交 fi
别忘了给脚本加执行权限:
chmod +x .git/hooks/commit-msg
4. 确保团队全员生效
- 把这个钩子脚本加入项目仓库,配合钩子同步逻辑(比如共享
.git/hooks目录,或写初始化脚本自动配置钩子),让所有成员克隆项目后自动应用规则 - 在CI/CD流程里再加一层验证,防止有人绕过本地钩子提交不符合要求的信息
灵活调整
如果团队需要支持更多提交类型(比如chore:、docs:),直接修改正则里的(fix|feat)部分,改成(fix|feat|chore|docs)就行;要是要求ID必须跟在固定文本后面(比如fixes bug #),也可以把正则调整得更严格,比如^(fix: fixes bug #\d+|feat: implements #\d+)$。
内容的提问来源于stack exchange,提问作者Jester
相关产品推荐
相关产品推荐

