Prolog Gerrit - 如果提交消息包含特定字符串,则验证标签

时间:2014-12-04 13:34:19

标签: prolog gerrit

我不熟悉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.

1 个答案:

答案 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.pllabel('Ticket-Checked', need(_)