Git提交信息的正则表达式

3

我正在尝试编写正则表达式(regex)以强制要求 Git 提交消息符合特定格式。我一直在修改半成品的版本,但是我无法完全按照自己的意愿使其起作用。这是我现在拥有的:

/^([a-z]{2,4}-[\d]{2,5}[, \n]{1,2})+\n{1}^[\w\n\s\*\-\.\:\'\,]+/i

以下是我需要推广的文本:

AB-1432, ABC-435, ABCD-42

Here is the multiline description, following a blank 
line after the Jira issue IDs
- Maybe bullet points, with either dashes
* Or asterisks

目前,它能匹配到这个问题,但是如果问题ID后面没有空行或者有多个空行的话也会被匹配到。

有没有什么方法可以强制执行这个要求,还是只能忍受它呢?

同时它也非常丑陋,我相信有更简洁的写法。

谢谢。


1
虽然我认为限制第一行的长度可能没问题,但我认为你至少应该允许在票证ID旁边添加一个简短的描述。许多工具只显示第一行,因此即使你强制要求更长的描述,如果你仅将其限制为票证ID,那么在许多情况下,一眼看到提交内容是关于什么的会更加困难。 - David Ongaro
1个回答

1
你的正则表达式允许在必须有的换行符后面使用\n作为可能的字符之一,因此当有多个时它才匹配。以下是清理过的正则表达式:/^([a-z]{2,4}-\d{2,5}(?=[, \n]),? ?\n?)+^\n([-\w\s*.:',]+\n)+/i。注意事项如下:
  • 这要求在下一个换行符之前至少有一个[-\w\s*.:',]字符。
  • 我将问题ID更改为一个可能的逗号、空格和换行符,按照这个顺序(最多一个)。你能使用预查吗?如果可以,我添加了(?=[, \n])以确保紧随问题ID后面至少有一个这些字符。
  • 还请注意,许多字符在字符类中不需要转义。

David Ongaro提出了一个非常好的观点,我如何在一个或多个问题ID之后的第一行中包含评论? - Steven Spasbo
@Steven:可能的评论格式是什么?我不熟悉语法。而且问题 ID 不一定只有一行,对吧?你的正则表达式允许在问题 ID 之间换行。 - Brian Stephens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接