From 8818977467d88125743535010c5b37521694df0a Mon Sep 17 00:00:00 2001 From: tandrii Date: Thu, 29 Sep 2016 04:29:57 -0700 Subject: [PATCH] Reland of Add CC_LIST and --cc to Gerrit issues via API to be similar to CCs in Rietveld Originally landed as issue 2378703002 at patchset 60001 (http://crrev.com/2378703002#ps60001). BUG=chromium:649660 TBR=rmistry@chromium.org Review-Url: https://codereview.chromium.org/2376323002 --- gerrit_util.py | 7 +++++-- git_cl.py | 17 ++++++++++------- tests/git_cl_test.py | 13 +++++++++---- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/gerrit_util.py b/gerrit_util.py index 011606f65..7cab2a5c8 100755 --- a/gerrit_util.py +++ b/gerrit_util.py @@ -613,7 +613,7 @@ def GetReview(host, change, revision): return ReadHttpJsonResponse(CreateHttpConn(host, path)) -def AddReviewers(host, change, add=None): +def AddReviewers(host, change, add=None, is_reviewer=True): """Add reviewers to a change.""" if not add: return @@ -621,7 +621,10 @@ def AddReviewers(host, change, add=None): add = (add,) path = 'changes/%s/reviewers' % change for r in add: - body = {'reviewer': r} + body = { + 'reviewer': r, + 'state': 'REVIEWER' if is_reviewer else 'CC', + } conn = CreateHttpConn(host, path, reqtype='POST', body=body) jmsg = ReadHttpJsonResponse(conn, ignore_404=False) return jmsg diff --git a/git_cl.py b/git_cl.py index 133713b07..c2675730c 100755 --- a/git_cl.py +++ b/git_cl.py @@ -2618,13 +2618,6 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase): else: refspec_opts.append('notify=NONE') - cc = self.GetCCList().split(',') - if options.cc: - cc.extend(options.cc) - cc = filter(None, cc) - if cc: - refspec_opts.extend('cc=' + email.strip() for email in cc) - reviewers = change_desc.get_reviewers() if reviewers: refspec_opts.extend('r=' + email.strip() for email in reviewers) @@ -2662,6 +2655,16 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase): 'Change-Id: %s') % (len(change_numbers), change_id)) self.SetIssue(change_numbers[0]) self._GitSetBranchConfigValue('gerritsquashhash', ref_to_push) + + # Add cc's from the CC_LIST and --cc flag (if any). + cc = self.GetCCList().split(',') + if options.cc: + cc.extend(options.cc) + cc = filter(None, [email.strip() for email in cc]) + if cc: + gerrit_util.AddReviewers( + self._GetGerritHost(), self.GetIssue(), cc, is_reviewer=False) + return 0 def _AddChangeIdToCommitMessage(self, options, args): diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py index 1bb517e38..2985d36c6 100755 --- a/tests/git_cl_test.py +++ b/tests/git_cl_test.py @@ -884,7 +884,6 @@ class TestGitCl(TestCase): calls += [ ((['git', 'rev-list', expected_upstream_ref + '..' + ref_to_push],), ''), - ((['git', 'config', 'rietveld.cc'],), '') ] notify_suffix = 'notify=%s' % ('ALL' if notify else 'NONE') @@ -893,9 +892,6 @@ class TestGitCl(TestCase): else: ref_suffix = '%' + notify_suffix - # Add cc from watch list. - ref_suffix += ',cc=joe@example.com' - if reviewers: ref_suffix += ',' + ','.join('r=%s' % email for email in sorted(reviewers)) @@ -925,6 +921,12 @@ class TestGitCl(TestCase): ((['git', 'config', 'branch.master.gerritsquashhash', 'abcdef0123456789'],), ''), ] + calls += [ + ((['git', 'config', 'rietveld.cc'],), ''), + ((['AddReviewers', 'chromium-review.googlesource.com', + 123456 if squash else None, + ['joe@example.com'], False],), ''), + ] calls += cls._git_post_upload_calls() return calls @@ -958,6 +960,9 @@ class TestGitCl(TestCase): self.mock(git_cl.gclient_utils, 'RunEditor', lambda *_, **__: self._mocked_call(['RunEditor'])) self.mock(git_cl, 'DownloadGerritHook', self._mocked_call) + self.mock(git_cl.gerrit_util, 'AddReviewers', + lambda h, i, add, is_reviewer: self._mocked_call( + ['AddReviewers', h, i, add, is_reviewer])) self.calls = self._gerrit_base_calls(issue=issue) self.calls += self._gerrit_upload_calls(