我不熟悉prolog,但我试图理解我从Gerrit Prolog Cookbook中复制的例子。
我添加了一个NoOp标签Ticket-Checked有三个状态-1,0,1。 如果提交消息与正则表达式匹配以提交,则标签必须为+1。 如果未包含在提交消息中,则gerrit应该忽略该标志。
submit_rule(S) :-
gerrit:default_submit(X), % get the current submit structure
X=.. [submit | Ls],
require_ticket_check_for_ticket(Ls, Nls),
S=.. [submit | Nls].
require_ticket_check_for_ticket(S1, S2) :-
gerrit:commit_message_matches("\\[Issue-[l-9][0-9]*\\]"), !,
S2 = [label('Ticket-Checked', need(_)) | S1]. % Add the label
require_ticket_check_for_ticket(S1, S2) :-
!, S2 = S1.
答案 0 :(得分:0)
以某种方式,该代码对我不起作用,只是更新了regex
的{{1}}并起作用:
gerrit:commit_message_matches
顺便说一句,最好使用submit_rule(S) :-
gerrit:default_submit(X),
X =.. [submit | Ls],
require_ticket_check_for_ticket(Ls, Nls),
S =.. [submit | Nls].
require_ticket_check_for_ticket(S1, S2) :-
gerrit:commit_message_matches('^issue-[\\d]+\\s?:\\s?[\\w\\W]+'),
!,
S2 = [label('Ticket-Checked', need(_)) | S1].
require_ticket_check_for_ticket(S1, S2) :-
!, S2 = S1.
进行验证,因为已经在ok(user(ID))
中添加了验证规则(^issue-[\\d]+\\s?:\\s?[\\w\\W]+
),因此,请更改rules.pl
到label('Ticket-Checked', need(_)
。