Add CC similarly to reviewers

This adds a --cc option to support the Cc feature in Gerrit 3.4 and
newer, similar in design to the --reviewers option.

Change-Id: I5c01c71d9adff631cff50d113b7255038ccc185d
This commit is contained in:
Mark Fedorov 2022-07-11 13:27:25 +00:00
parent f02b41df74
commit 6f1f0f0ce7
3 changed files with 40 additions and 0 deletions

View File

@ -22,6 +22,10 @@ If you want to subscribe some reviewers::
git review --reviewers a@example.com b@example.com
If you want to subscribe some ccs::
git review --cc a@example.com b@example.com
If you want to disable autogenerated topic::
git review -T

View File

@ -1522,6 +1522,8 @@ additional information:
parser.add_argument("--reviewers", nargs="+",
help="Add reviewers to uploaded patch sets.")
parser.add_argument("--cc", nargs="+",
help="Add CC to uploaded patch sets.")
parser.add_argument("-n", "--dry-run", dest="dry", action="store_true",
help="Don't actually submit the branch for review")
parser.add_argument("-i", "--new-changeid", dest="regenerate",
@ -1798,6 +1800,10 @@ additional information:
assert_valid_reviewers(options.reviewers)
push_options += ["r=%s" % r for r in options.reviewers]
if options.cc:
assert_valid_reviewers(options.cc)
push_options += ["cc=%s" % cc for cc in options.cc]
if options.regenerate:
print("Amending the commit to regenerate the change id\n")
regenerate_cmd = "git commit --amend"

View File

@ -275,6 +275,36 @@ class GitReviewTestCase(tests.BaseGitReviewTestCase):
self.assertEqual(set(['reviewer1', 'reviewer2']), reviewers)
def test_git_review_cc(self):
"""Test git-review adding CC to changes."""
self._run_git_review('-s')
# Create users to add as CC
self._run_gerrit_cli('create-account', '--email',
'cc1@example.com', 'cc1')
self._run_gerrit_cli('create-account', '--email',
'cc2@example.com', 'cc2')
self._simple_change('test file', 'test commit message')
review_ccs = self._run_git_review('--cc', 'cc1', 'cc2')
self.assertIn("new: 1", review_ccs)
# verify both CCs are on patch set
head = self._run_git('rev-parse', 'HEAD')
change = self._run_gerrit_cli('query', '--format=JSON',
'--all-reviewers', head)
# The first result should be the one we want
change = json.loads(change.split('\n')[0])
self.assertEqual(2, len(change['allReviewers']))
ccs = set()
for cc in change['allReviewers']:
ccs.add(cc['username'])
self.assertEqual(set(['cc1', 'cc2']), ccs)
def test_rebase_unstaged_changes_msg(self):
"""Test message displayed when unstaged changes are present."""
self._run_git_review('-s')