)]}'
{"doc/source/admin/drivers/pagure.rst":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"0e2f4666fdbceb32100b52b0ef748770b742848f","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"      .. value:: thumbsdown"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"         Negative pull request review removed."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"   .. attr:: comment"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffb9cba7_1652b968","line":122,"range":{"start_line":122,"start_character":38,"end_line":122,"end_character":45},"updated":"2019-04-22 08:12:55.000000000","message":"Isn\u0027t the review added?","commit_id":"5c9ebbe880e324333429457719bc022325ce0ff0"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"663f2e17733a8eac306f2e67baccda3ae5d94da3","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"      .. value:: thumbsdown"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"         Negative pull request review removed."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"   .. attr:: comment"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffb9cba7_2ca3b7a0","line":122,"range":{"start_line":122,"start_character":38,"end_line":122,"end_character":45},"in_reply_to":"ffb9cba7_1652b968","updated":"2019-04-24 10:11:55.000000000","message":"Done","commit_id":"5c9ebbe880e324333429457719bc022325ce0ff0"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"34b2ec58a7f8138b1681398a3f6202c7b6c326fd","unresolved":false,"context_lines":[{"line_number":63,"context_line":"      :default: https://{baseurl}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"      Path to the Pagure Git repositories. Used to clone."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Trigger Configuration"},{"line_number":68,"context_line":"---------------------"},{"line_number":69,"context_line":"Pagure webhook events can be configured as triggers."}],"source_content_type":"text/x-rst","patch_set":31,"id":"dfbec78f_acad1eea","line":66,"updated":"2019-05-11 16:31:20.000000000","message":"For on prem or test installations of pagure it might make sense to later add an option to disable ssl validation.","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"46315a21bd7a1105e297c69ad1b32ec0586782d2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"      :default: https://{baseurl}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"      Path to the Pagure Git repositories. Used to clone."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Trigger Configuration"},{"line_number":68,"context_line":"---------------------"},{"line_number":69,"context_line":"Pagure webhook events can be configured as triggers."}],"source_content_type":"text/x-rst","patch_set":31,"id":"dfbec78f_e3e4490f","line":66,"in_reply_to":"dfbec78f_acad1eea","updated":"2019-05-15 16:37:25.000000000","message":"I think defining baseurl might be sufficient to not use the default https scheme.","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"}],"tests/fixtures/layouts/merging-pagure.yaml":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"34b2ec58a7f8138b1681398a3f6202c7b6c326fd","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    check-merge:"},{"line_number":39,"context_line":"      jobs:"},{"line_number":40,"context_line":"        - project-test"},{"line_number":41,"context_line":" "},{"line_number":42,"context_line":"- project:"},{"line_number":43,"context_line":"    name: org/project2"},{"line_number":44,"context_line":"    gate-merge:"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"dfbec78f_cc7bb278","line":41,"updated":"2019-05-11 16:31:20.000000000","message":"Trailing whitespace","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"46315a21bd7a1105e297c69ad1b32ec0586782d2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    check-merge:"},{"line_number":39,"context_line":"      jobs:"},{"line_number":40,"context_line":"        - project-test"},{"line_number":41,"context_line":" "},{"line_number":42,"context_line":"- project:"},{"line_number":43,"context_line":"    name: org/project2"},{"line_number":44,"context_line":"    gate-merge:"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"dfbec78f_83ef8de7","line":41,"in_reply_to":"dfbec78f_cc7bb278","updated":"2019-05-15 16:37:25.000000000","message":"Done","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"}],"tests/fixtures/layouts/requirements-pagure.yaml":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"34b2ec58a7f8138b1681398a3f6202c7b6c326fd","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    req-score-1:"},{"line_number":53,"context_line":"      jobs:"},{"line_number":54,"context_line":"        - project-test"},{"line_number":55,"context_line":" "},{"line_number":56,"context_line":"- project:"},{"line_number":57,"context_line":"    name: org/project2"},{"line_number":58,"context_line":"    req-score-2:"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"dfbec78f_8c993ac5","line":55,"updated":"2019-05-11 16:31:20.000000000","message":"Trailing whitespace","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"46315a21bd7a1105e297c69ad1b32ec0586782d2","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    req-score-1:"},{"line_number":53,"context_line":"      jobs:"},{"line_number":54,"context_line":"        - project-test"},{"line_number":55,"context_line":" "},{"line_number":56,"context_line":"- project:"},{"line_number":57,"context_line":"    name: org/project2"},{"line_number":58,"context_line":"    req-score-2:"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"dfbec78f_a3ead1d4","line":55,"in_reply_to":"dfbec78f_8c993ac5","updated":"2019-05-15 16:37:25.000000000","message":"Done","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"}],"tests/unit/test_pagure_driver.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"34b2ec58a7f8138b1681398a3f6202c7b6c326fd","unresolved":false,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        self.assertTrue(A.is_merged)"},{"line_number":493,"context_line":"        self.assertTrue(B.is_merged)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class TestPagureWebhook(ZuulTestCase):"},{"line_number":497,"context_line":"    config_file \u003d \u0027zuul-pagure-driver.conf\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_ccf09200","line":494,"updated":"2019-05-11 16:31:20.000000000","message":"We also have test cases for cross-source dependencies (Gerrit change -\u003e github PR) in test_cross_crd.py. I think we should extend this to cover pagure as well.","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"46315a21bd7a1105e297c69ad1b32ec0586782d2","unresolved":false,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        self.assertTrue(A.is_merged)"},{"line_number":493,"context_line":"        self.assertTrue(B.is_merged)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"class TestPagureWebhook(ZuulTestCase):"},{"line_number":497,"context_line":"    config_file \u003d \u0027zuul-pagure-driver.conf\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_a3989174","line":494,"in_reply_to":"dfbec78f_ccf09200","updated":"2019-05-15 16:37:25.000000000","message":"I\u0027ve only added two additional tests for crd between Gerrit and Pagure. If more is needed for the initial implementation then let me know about the coverage you expect there.","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"}],"zuul/driver/pagure/__init__.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3c19cd668215dbd1fd973b08c200f26e9d4c162d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from zuul.driver import Driver, ConnectionInterface, TriggerInterface"},{"line_number":2,"context_line":"from zuul.driver import SourceInterface, ReporterInterface"},{"line_number":3,"context_line":"from zuul.driver.pagure import pagureconnection"},{"line_number":4,"context_line":"from zuul.driver.pagure import paguresource"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_ed86cd15","line":1,"updated":"2018-12-18 14:30:46.000000000","message":"Could you please also put the copyright header in this file?","commit_id":"6b96ee5edabf93b15cadefbc2aedf93b04a9a19f"}],"zuul/driver/pagure/pagureconnection.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"34b2ec58a7f8138b1681398a3f6202c7b6c326fd","unresolved":false,"context_lines":[{"line_number":38,"context_line":"#"},{"line_number":39,"context_line":"# Pipelines examples"},{"line_number":40,"context_line":"#"},{"line_number":41,"context_line":"# - pipeline:"},{"line_number":42,"context_line":"#     name: check"},{"line_number":43,"context_line":"#     manager: independent"},{"line_number":44,"context_line":"#     require:"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_acc43e92","line":41,"updated":"2019-05-11 16:31:20.000000000","message":"Good idea to document some reference pipelines.\nWe often see questions popping up about how to define certain pipelines.\nI think it would make sense to add a page to the docs (as a followup) containing a set of reference pipelines (check, gate, post) for each driver.","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"46315a21bd7a1105e297c69ad1b32ec0586782d2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"#"},{"line_number":39,"context_line":"# Pipelines examples"},{"line_number":40,"context_line":"#"},{"line_number":41,"context_line":"# - pipeline:"},{"line_number":42,"context_line":"#     name: check"},{"line_number":43,"context_line":"#     manager: independent"},{"line_number":44,"context_line":"#     require:"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_03839d05","line":41,"in_reply_to":"dfbec78f_acc43e92","updated":"2019-05-15 16:37:25.000000000","message":"I\u0027ve added the reference pipelines in the Pagure driver doc.","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"34b2ec58a7f8138b1681398a3f6202c7b6c326fd","unresolved":false,"context_lines":[{"line_number":666,"context_line":"            del self._change_cache[key]"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    def clearBranchCache(self):"},{"line_number":669,"context_line":"        pass"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    def getWebController(self, zuul_web):"},{"line_number":672,"context_line":"        return PagureWebController(zuul_web, self)"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_8c4cda42","line":669,"updated":"2019-05-11 16:31:20.000000000","message":"Don\u0027t we need to clear project_branch_cache here?","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"46315a21bd7a1105e297c69ad1b32ec0586782d2","unresolved":false,"context_lines":[{"line_number":666,"context_line":"            del self._change_cache[key]"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"    def clearBranchCache(self):"},{"line_number":669,"context_line":"        pass"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"    def getWebController(self, zuul_web):"},{"line_number":672,"context_line":"        return PagureWebController(zuul_web, self)"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_2386e114","line":669,"in_reply_to":"dfbec78f_8c4cda42","updated":"2019-05-15 16:37:25.000000000","message":"Done","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"34b2ec58a7f8138b1681398a3f6202c7b6c326fd","unresolved":false,"context_lines":[{"line_number":735,"context_line":""},{"line_number":736,"context_line":"            # Pagure does not send files details in the git-receive event"},{"line_number":737,"context_line":"            # Instead refresh the repository and check for conf files"},{"line_number":738,"context_line":"            job \u003d self.sched.merger.getFiles("},{"line_number":739,"context_line":"                self.connection_name, project.name, change.branch,"},{"line_number":740,"context_line":"                files\u003d[\u0027zuul.yaml\u0027, \u0027.zuul.yaml\u0027], dirs\u003d[\u0027zuul.d\u0027, \u0027.zuul.d\u0027])"},{"line_number":741,"context_line":"            self.log.debug(\"Submitting cat job %s for %s %s %s\" % ("},{"line_number":742,"context_line":"                job, self.connection_name, project, change.branch))"},{"line_number":743,"context_line":"            self.log.debug(\"Waiting for cat job %s\" % job)"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_2c67eebf","line":740,"range":{"start_line":738,"start_character":0,"end_line":740,"end_character":78},"updated":"2019-05-11 16:31:20.000000000","message":"This is a very expensive operation and you don\u0027t want to do this here because getChange is called in the critical path of the event loop. In a more busy system this will become a severe scaling issue.\n\nThe Github driver has a similar problem for PRs containing more than 300 files. There we deal with it by setting the files explicitly to None and delay getting the files to the pipeline processing stage where this can be done asynchronously. You can see in [1] how the github driver uses this mechanism. For reference you can see the complete implementation of this mechanism in [2].\n\n[1] https://opendev.org/zuul/zuul/src/branch/master/zuul/driver/github/githubconnection.py#L994\n[2] https://review.opendev.org/625584","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"46315a21bd7a1105e297c69ad1b32ec0586782d2","unresolved":false,"context_lines":[{"line_number":735,"context_line":""},{"line_number":736,"context_line":"            # Pagure does not send files details in the git-receive event"},{"line_number":737,"context_line":"            # Instead refresh the repository and check for conf files"},{"line_number":738,"context_line":"            job \u003d self.sched.merger.getFiles("},{"line_number":739,"context_line":"                self.connection_name, project.name, change.branch,"},{"line_number":740,"context_line":"                files\u003d[\u0027zuul.yaml\u0027, \u0027.zuul.yaml\u0027], dirs\u003d[\u0027zuul.d\u0027, \u0027.zuul.d\u0027])"},{"line_number":741,"context_line":"            self.log.debug(\"Submitting cat job %s for %s %s %s\" % ("},{"line_number":742,"context_line":"                job, self.connection_name, project, change.branch))"},{"line_number":743,"context_line":"            self.log.debug(\"Waiting for cat job %s\" % job)"}],"source_content_type":"text/x-python","patch_set":31,"id":"dfbec78f_c3a585a3","line":740,"range":{"start_line":738,"start_character":0,"end_line":740,"end_character":78},"in_reply_to":"dfbec78f_2c67eebf","updated":"2019-05-15 16:37:25.000000000","message":"Thanks for the extended explanation and links :). So I just set files to None and if I understood well then that\u0027s enough.","commit_id":"671a9b236379a54e12d4dbe79a57b65d93d60910"}],"zuul/driver/pagure/paguremodel.py":[{"author":{"_account_id":10384,"name":"Haïkel Guémar","email":"hguemar@fedoraproject.org","username":"hguemar"},"change_message_id":"0b40d1381dafc29d7df71e95246a40c9d27ab201","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return True"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class GithubEventFilter(EventFilter, PagureCommonFilter):"},{"line_number":76,"context_line":"    def __init__(self, trigger, types\u003d[], branches\u003d[], refs\u003d[],"},{"line_number":77,"context_line":"                 comments\u003d[], actions\u003d[], labels\u003d[], unlabels\u003d[],"},{"line_number":78,"context_line":"                 states\u003d[], statuses\u003d[], required_statuses\u003d[],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_49654348","line":75,"updated":"2018-10-25 14:14:04.000000000","message":"Shouldn\u0027t it be PagureEventFilter","commit_id":"c915a575042047af9eaf76f052a582ab68dc55c3"},{"author":{"_account_id":6889,"name":"Fabien Boucher","email":"fboucher@redhat.com","username":"fabien-boucher"},"change_message_id":"c6d8dd437e2f303852425b823168890923cbd3ea","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return True"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class GithubEventFilter(EventFilter, PagureCommonFilter):"},{"line_number":76,"context_line":"    def __init__(self, trigger, types\u003d[], branches\u003d[], refs\u003d[],"},{"line_number":77,"context_line":"                 comments\u003d[], actions\u003d[], labels\u003d[], unlabels\u003d[],"},{"line_number":78,"context_line":"                 states\u003d[], statuses\u003d[], required_statuses\u003d[],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e1c9b423","line":75,"in_reply_to":"3f79a3b5_49654348","updated":"2018-10-26 07:37:12.000000000","message":"Yes it should, copy/pasta :) I\u0027ll fix next PS.","commit_id":"c915a575042047af9eaf76f052a582ab68dc55c3"}]}
