From b1f865dac505908b74686004714692e192d913c4 Mon Sep 17 00:00:00 2001 From: Sylvain Defresne Date: Tue, 12 Feb 2019 12:38:22 +0000 Subject: [PATCH] Add a --ignore-self parameter to "git cl owners" Sometimes CL author is also listed as OWNERS but want to find a co-owner to review CL. Currently "git cl owners" is unhelpful as it consider the author's ownership as enough. Add a --ignore-self parameter to "git cl owners" that will cause the tool to ignore author's ownership when looking for a reviewer. Bug: none Change-Id: Iba110a465a552cd6befb46c77b2e65f60b663a13 Reviewed-on: https://chromium-review.googlesource.com/c/1459625 Reviewed-by: Dirk Pranke Commit-Queue: Sylvain Defresne --- git_cl.py | 7 ++++++- owners_finder.py | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/git_cl.py b/git_cl.py index c49d6581a..7fe6c3060 100755 --- a/git_cl.py +++ b/git_cl.py @@ -5098,6 +5098,10 @@ def CMDowners(parser, args): '--ignore-current', action='store_true', help='Ignore the CL\'s current reviewers and start from scratch.') + parser.add_option( + '--ignore-self', + action='store_true', + help='Do not consider CL\'s author as an owners.') parser.add_option( '--no-color', action='store_true', @@ -5137,7 +5141,8 @@ def CMDowners(parser, args): [] if options.ignore_current else cl.GetReviewers(), fopen=file, os_path=os.path, disable_color=options.no_color, - override_files=change.OriginalOwnersFiles()).run() + override_files=change.OriginalOwnersFiles(), + ignore_author=options.ignore_self).run() def BuildGitDiffCmd(diff_type, upstream_commit, args, allow_prefix=False): diff --git a/owners_finder.py b/owners_finder.py index d08ca59ed..afdda946c 100644 --- a/owners_finder.py +++ b/owners_finder.py @@ -26,7 +26,8 @@ class OwnersFinder(object): fopen, os_path, email_postfix='@chromium.org', disable_color=False, - override_files=None): + override_files=None, + ignore_author=False): self.email_postfix = email_postfix if os.name == 'nt' or disable_color: @@ -46,7 +47,7 @@ class OwnersFinder(object): filtered_files = files reviewers = list(reviewers) - if author: + if author and not ignore_author: reviewers.append(author) # Eliminate files that existing reviewers can review. @@ -62,6 +63,8 @@ class OwnersFinder(object): self.db.load_data_needed_for(files) self.all_possible_owners = self.db.all_possible_owners(files, None) + if author and author in self.all_possible_owners: + del self.all_possible_owners[author] self.owners_to_files = {} self._map_owners_to_files(files)