scripts/gerrit-filter-domain | 86 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+)
New commits: commit e3ff3fa2032839d62739cfaa323dbf7d0352cdc7 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Jan 10 18:28:55 2014 +0100 scripts: add a gerrit script that can filter by domain Change-Id: I1cd353f9f4db45fa1c9dafadd7fec14b9028f2ae diff --git a/scripts/gerrit-filter-domain b/scripts/gerrit-filter-domain new file mode 100755 index 0000000..4e5f78f --- /dev/null +++ b/scripts/gerrit-filter-domain @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Simple script that tries to do more than a simple query: +# - can filter for the owner's domains (e.g. you can filter for gmail.com to see volunteer patches) +# - can exclude areas you're not familiar with +# + +import json +import subprocess +import sys + + +def dumpChange(change): + print(json.dumps(change, sort_keys=True, indent=4, separators=(',', ': '))) + + +def filterDomain(changes, domain): + ret = [] + for i in changes: + if i['owner']['email'].endswith(domain): + ret.append(i) + return ret + + +def main(argv): + domain = argv[0] + blacklist = argv[1:] + buf = subprocess.check_output(['ssh', 'logerrit', 'gerrit', 'query', 'status:open', '--format', 'JSON', '--all-approvals', '--files']) + changes = [] + for line in buf.decode('utf-8').split('\n'): + i = json.loads(line) + if 'type' in i: + break + changes.append(i) + changes.sort(key=lambda i: int(i['number'])) + domainChanges = filterDomain(changes, domain) + + skippedChanges = [] + for i in domainChanges: + skip = False + + files = (set([fileobj['file'] for pset in i['patchSets'] for fileobj in pset['files']])) + files.remove('/COMMIT_MSG') + + try: + for j in files: + for k in blacklist: + if k in j: + skippedChanges.append((i, k)) + skip = True + break + if skip: + break + for j in i['patchSets'][-1]['approvals']: + if j['value'] == "-1": + skippedChanges.append((i, "-1 review")) + skip = True + break + except: + pass + if skip: + continue + print("http://gerrit.libreoffice.org/%s [%s] %s" % (i['number'], i['branch'], i['subject'])) + print("Changed files: %s" % ', '.join(files)) + print() + print("Found %s changes to review" % (len(domainChanges) - len(skippedChanges))) + print() + print("Skipped %s changes:" % len(skippedChanges)) + for i in skippedChanges: + print("%s: %s" % (i[0]['number'], i[1])) + +if __name__ == "__main__": + try: + main(sys.argv[1:]) + except IndexError: + print("Usage: gerrit-filter-domain @example.com [exclude-path-pattern1, exclude-path-pattern2, ...]") + print() + print("Example: gerrit-filter-domain @gmail.com chart") + +# vim:set shiftwidth=4 softtabstop=4 expandtab: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits