level 1
阿宅Min
楼主
请问有人会用prolog进行gerrit的提交规则设置吗?
最近遇到一个很奇怪的问题,原规则是这样的,用prolog制定规则,只能由代码的提交者进行合入代码操作,示例如下:
submit_rule(S) :-
gerrit:default_submit(In),
In =.. [submit | Ls],
only_allow_author_to_submit(Ls, R),
S =.. [submit | R].
only_allow_author_to_submit(S, S) :-
gerrit:commit_author(Id),
gerrit:current_user(Id),
!.
only_allow_author_to_submit(S1, [label('Only-Author-Can-Submit', need(_)) | S1]).
但是当我想指定几个人进行submit操作时:
submit_rule(submit(CR, V)) :-
base(CR, V),
CR = label(_, ok(Reviewer)),
gerrit:current_user(Id),
(user(284) == Id;user(41) == Id;user(5) == Id),
!.
submit_rule(submit(CR, V, N)) :-
base(CR, V),
N = label('受限代码', need(_)).
base(CR, V) :-
gerrit:max_with_block(-2, 2, 'Code-Review', CR),
gerrit:max_with_block(-1, 1, 'Verified', V).
此时只有id为284,41,5的几个人能看见submit按钮,我以为这样就大功告成了,然而……
按下submit后,报错了……
提示:
Code Review - Error
The change cuold not be submitted because it depends on change(s) [104403],which could not be submitted because:
104403:needs 受限代码;
如果将
gerrit:current_user(Id),
(user(284) == Id;user(41) == Id;user(5) == Id),
改为
gerrit:commit_author(Id),
gerrit:current_user(Id),
又正常了,我不知道哪里出了问题。
2017年07月19日 02点07分
1
最近遇到一个很奇怪的问题,原规则是这样的,用prolog制定规则,只能由代码的提交者进行合入代码操作,示例如下:
submit_rule(S) :-
gerrit:default_submit(In),
In =.. [submit | Ls],
only_allow_author_to_submit(Ls, R),
S =.. [submit | R].
only_allow_author_to_submit(S, S) :-
gerrit:commit_author(Id),
gerrit:current_user(Id),
!.
only_allow_author_to_submit(S1, [label('Only-Author-Can-Submit', need(_)) | S1]).
但是当我想指定几个人进行submit操作时:
submit_rule(submit(CR, V)) :-
base(CR, V),
CR = label(_, ok(Reviewer)),
gerrit:current_user(Id),
(user(284) == Id;user(41) == Id;user(5) == Id),
!.
submit_rule(submit(CR, V, N)) :-
base(CR, V),
N = label('受限代码', need(_)).
base(CR, V) :-
gerrit:max_with_block(-2, 2, 'Code-Review', CR),
gerrit:max_with_block(-1, 1, 'Verified', V).
此时只有id为284,41,5的几个人能看见submit按钮,我以为这样就大功告成了,然而……
按下submit后,报错了……
提示:
Code Review - Error
The change cuold not be submitted because it depends on change(s) [104403],which could not be submitted because:
104403:needs 受限代码;
如果将
gerrit:current_user(Id),
(user(284) == Id;user(41) == Id;user(5) == Id),
改为
gerrit:commit_author(Id),
gerrit:current_user(Id),
又正常了,我不知道哪里出了问题。