मैंने अभी हमारे गेरिट इंस्टॉलेशन के लिए यह प्रोलॉग फ़िल्टर लिखा है। मैंने इसे मूल परियोजना में submit_filter के रूप में किया क्योंकि मैं चाहता था कि यह हमारे सिस्टम में सभी परियोजनाओं पर लागू हो।
%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).
rule #8 from the cookbook से अधिक इस नियम के लाभ (IMO) कर रहे हैं:
Self-Reviewed
लेबल केवल दिखाया गया है जब परिवर्तन अवरुद्ध किया जा रहा है, बल्कि हर परिवर्तन करने के लिए एक Non-Author-Code-Review
लेबल जोड़ने से
reject(O)
का उपयोग कर नियम से Self-Reviewed
लेबल का कारण बनता है सचमुच एक लाल झंडा
- होने के लिए एक के रूप में 0,123,966 एक
submit_rule
के बजाय, इस नियम एक माता पिता परियोजना में स्थापित किया है और सभी उप-परियोजनाओं
कृपया ध्यान दें पर लागू होता है: यह नियम स्वयं की समीक्षा एक परिवर्तन से Owner
को रोकने के लिए लेखक है, उदाहरण के जबकि कुकबुक से Author
के खिलाफ तुलना करता है। आपके वर्कफ़्लो के आधार पर, आप gerrit:change_owner(O)
को gerrit:commit_author(O)
या gerrit:commit_committer(O)
स्रोत
2016-06-16 17:00:50
क्या आप वाकई इसे मजबूर करना चाहते हैं? प्रोग्रामर बुद्धिमान लोग हैं, बस इसे एक नियम बनाओ। कुछ कोने मामलों में आपके स्वयं के कोड की समीक्षा उपयोगी हो सकती है (यानी कोड पहले से ही समीक्षा की गई थी लेकिन आपने प्रतिबद्ध संदेश में गलत वर्तनी तय की, इस मामले में एक और समीक्षा समय खो जाएगी)। –
@ टोमाज़विसाकी मैं बस इतना कह सकता हूं कि जब प्रोग्राम निर्धारित प्रक्रिया की बात आती है तो प्रोग्रामर बुद्धिमान से दूर होते हैं। बेवकूफ डेवलपर्स की वजह से मैं कुछ समय के लिए गेरिट में इस सुविधा की तलाश कर रहा हूं। विशिष्ट उदाहरण जो आप अपने काम की समीक्षा करना चाहते हैं, पूरे सिस्टम को गलत उपयोग के लिए खोलता है। क्या एक और सहकर्मी समीक्षक से एक साधारण परिवर्तन की समीक्षा करने के लिए यह बहुत कुछ है! बस जोड़ने के लिए मैं एक डेवलपर हूँ। – Tnem
यह उत्तर देखें: [ब्लॉक स्टेटमेंट का उपयोग करें] (https://stackoverflow.com/questions/11560812/exclude-author-from-gerrit-review/47887713#47887713) – very