gerrit prolog提交规则条件检查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gerrit prolog提交规则条件检查相关的知识,希望对你有一定的参考价值。

如果插入的代码超过定义的阈值,我们使用gerrit 2.11添加经理批准标签。 prolog rules.pl如下。

我可以使用第7行和注释第8行删除“Manager-Approval”;但如果注释第7行和第8行,则“经理批准”始终存在。

如果我要使用以下行替换第8行,那么经理批准也在那里,这是否意味着commit_stats()总是返回true,而第8行将不会运行remove_verified()调用?

我们是prolog的新手,任何地狱都将非常感激。

remove_verified([label('Manager-Approval',_)| T],R): - inserted = 10,inserted> 5,remove_verified(T,R),!

submit_rule(S) :-
       gerrit:default_submit(X),
       X =.. [submit | Ls],
       remove_verified(Ls, R),
       S =.. [submit | R].

remove_verified([], []).
%remove_verified([label('Manager-Approval', _) | T], R) :- remove_verified(T, R), !.
remove_verified([label('Manager-Approval', _) | T], R) :- gerrit:commit_stats(_, inserted, _), inserted > 5, remove_verified(T, R), !.
remove_verified([H|T], [H|R]) :- remove_verified(T, R).
答案

供以后参考,以下提交规则运作良好。

  • 在Prolog中,变量必须以大写字母*开头

submit_rule(S) :-
       gerrit:default_submit(X),
       X =.. [submit | Ls],
       remove_verified(Ls, R),
       S =.. [submit | R].

remove_verified([], []).
%remove_verified([label('Manager-Approval', _) | T], R) :- remove_verified(T, R), !.
remove_verified([label('Manager-Approval', _) | T], R) :- gerrit:commit_stats(_, Inserted, _), Inserted > 5, remove_verified(T, R), !.
remove_verified([H|T], [H|R]) :- remove_verified(T, R).

以上是关于gerrit prolog提交规则条件检查的主要内容,如果未能解决你的问题,请参考以下文章

从gerrit审查中排除作者

crucible VS gerrit

[原创]升级Gerrit的commit-msg,检查git commit时必须填写开发任务编号TaskID

gerrit的简单介绍

ubuntu搭建gerrit+gitweb代码审核系统

搜索所有有条件的父亲在Prolog