2012-07-19 18 views
14

chcę zabronić autor zmian recenzję jego/jej własne zmiany w . Jestem świadomy this suggested hack, ale to naprawdę nie rozwiązuje problemu.Wykluczanie autorem przeglądu gerrit

Teraz I learned from the gerrit issues, że reguły zakodowane przez gerrit mogą być modyfikowane przez custom prolog code, więc potencjalnie powinna być możliwa modyfikacja workflow, jak chcę. Ja jednak nigdy nie zostały zmodyfikowane obieg Gerrit przed i nie wiem dużo .

Czy ktoś ma mały, działający przykład niestandardowych reguł dla gerrit przy użyciu tego silnika prolog?

ja chętnie akceptują inne alternatywy jak zabronić autorów robi siebie opinię, ponieważ nie wymagają one mojego zespołu, aby zmienić obecną pracę.

Odpowiedz

2

znalazłem bardzo łatwą odpowiedź w tej grupie Google: groups.google.com/disable-self-review

W projekcie dominującej (domyślnie jest projekt Wszystkie projekty) dodaj to do projektu.Plik konfiguracyjny w bibl/meta/config oddziału:

[access "refs/*"] 
label-Code-Review = block -2..+2 group Change Owner 

iw grupach złożyć w tej samej gałęzi dodać tę linię

global:Change-Owner Change Owner 

następnie stwierdzenie, że pozwala sobie prawo do projektu Projekt dziecka. config:

label-Code-Review = -2..+2 group Developers 

Upewnij zrobić napisać oświadczenie bloku w projekcie dominującej i dać uprawnienia w projekcie dzieci. Jeśli zezwolenie i blok znajdują się w tym samym pliku, zezwolenie zostanie zmienione na (patrz this). Spowoduje to zablokowanie właściciela zmiany i podanie wartości -2 lub +2. Pozostawia nietknięte opcje -1 i +1. Możesz dodać podobną instrukcję dla dowolnych innych niestandardowych etykiet, których możesz użyć.

3

nie jestem pewien, że to, czego szukasz, ale może dać ci trochę inspiracji. Według this discussion następujący fragment zatwierdza zmiany tylko wtedy, gdy recenzent i właściciel zmiany nie są tą samą osobą.

% If a reviewer approved the change, its OK. 
    submit_rule(submit(CR)) :- 
    change_owner(Owner), 
    max_with_block('Code-Review', -2, 2, ok(Reviewer)), 
    not_same(Owner, Reviewer), 
    CR = label('Code-Review', ok(Reviewer)), 
    !. 
0

napisałem this answer na pytanie, które związane, ale może to prowadzić Cię w dobrym kierunku:

napisałem ten prolog filtr dla naszej instalacji Gerrit. Zrobiłem to jako filter_filter w projekcie nadrzędnym, ponieważ chciałem, aby było ono stosowane do wszystkich projektów w naszym systemie.

%filter to require all projects to have a code-reviewer other than the owner 
submit_filter(In, Out) :- 
    %unpack the submit rule into a list of code reviews 
    In =.. [submit | Ls], 
    %add the non-owner code review requiremet 
    reject_self_review(Ls, R), 
    %pack the list back up and return it (kinda) 
    Out =.. [submit | R]. 

reject_self_review(S1, S2) :- 
    %set O to be the change owner 
    gerrit:change_owner(O), 
    %find a +2 code review, if it exists, and set R to be the reviewer 
    gerrit:commit_label(label('Code-Review', 2), R), 
    %if there is a +2 review from someone other than the owner, then the filter has no work to do, assign S2 to S1 
    R \= O, !, 
    %the cut (!) predicate prevents further rules from being consulted 
    S2 = S1. 
reject_self_review(S1, S2) :- 
    %set O to be the change owner 
    gerrit:change_owner(O), 
    find a +2 code review, if it exists, and set R to be the reviewer 
    gerrit:commit_label(label('Code-Review', 2), R), 
    R = O, !, 
    %if there isn't a +2 from someone else (above rule), and there is a +2 from the owner, reject with a self-reviewed label 
    S2 = [label('Self-Reviewed', reject(O))|S1]. 
%if the above two rules didn't make it to the ! predicate, there aren't any +2s so let the default rules through unfiltered 
reject_self_review(S1, S1). 

świadczeń (IMO) od tej reguły nad rule #8 from the cookbook są:

  • Self-Reviewed etykieta jest widoczna tylko wtedy, gdy zmiana jest blokowany, zamiast dodawania Non-Author-Code-Review wytwórnię do każdy zmian
  • korzystając reject(O) reguła powoduje etykietę Self-Reviewed dosłownie być czerwona flaga
  • Jako submit_filter zamiast submit_rule, zasada ta jest zainstalowany w projekcie dominującej i odnosi się do wszystkich podprojektów

Uwaga: Zasada ta jest autorstwa zapobiec Owner od samodzielnego przeglądu zmian, podczas gdy przykładowo z książki kucharskiej porównuje się z Author. W zależności od przepływu pracy, można wymienić 2 gerrit:change_owner(O) predykatów z gerrit:commit_author(O) lub gerrit:commit_committer(O)

Powiązane problemy