Make it possible to specify who is notified

This is documented at
<https://gerrit-review.googlesource.com/Documentation/user-upload.html#push_options>.

Change-Id: Ifbc0ec1225052cb804fcf537f5a071cad29e8328
This commit is contained in:
Miklos Vajna 2020-01-16 13:55:04 +01:00
parent 5afa906ef5
commit c37c73a73e
4 changed files with 29 additions and 0 deletions

View File

@ -42,6 +42,7 @@
.Op Fl r Ar remote .Op Fl r Ar remote
.Op Fl t Ar topic .Op Fl t Ar topic
.Op Fl \-reviewers Ar reviewer ... .Op Fl \-reviewers Ar reviewer ...
.Op Fl \-notify Ar type
.Op Ar branch .Op Ar branch
.Nm .Nm
.Fl l .Fl l
@ -152,6 +153,8 @@ If not specified, a bug number from the commit summary will be used. Alternative
Submit review without topic. Submit review without topic.
.It Fl \-reviewers Ar reviewer ... .It Fl \-reviewers Ar reviewer ...
Subscribe one or more reviewers to the uploaded patch sets. Reviewers should be identifiable by Gerrit (usually use their Gerrit username or email address). Subscribe one or more reviewers to the uploaded patch sets. Reviewers should be identifiable by Gerrit (usually use their Gerrit username or email address).
.It Fl \-notify Ar type
Control to whom email notifications are sent. Possible values are NONE, OWNER, OWNER_REVIEWERS, ALL (the last one is the default).
.It Fl u , Fl \-update .It Fl u , Fl \-update
Skip cached local copies and force updates from network resources. Skip cached local copies and force updates from network resources.
.It Fl l , Fl \-list .It Fl l , Fl \-list

View File

@ -1436,6 +1436,10 @@ review.
action="store_true", action="store_true",
help="Use remote push-url logic instead of separate" help="Use remote push-url logic instead of separate"
" remotes") " remotes")
parser.add_argument('--notify',
choices=['NONE', 'OWNER', 'OWNER_REVIEWERS', 'ALL'],
help="Control to whom email notifications are sent,"
" defaults to ALL.")
rebase_group = parser.add_mutually_exclusive_group() rebase_group = parser.add_mutually_exclusive_group()
rebase_group.add_argument("-R", "--no-rebase", dest="rebase", rebase_group.add_argument("-R", "--no-rebase", dest="rebase",
@ -1704,6 +1708,9 @@ review.
if options.remove_private: if options.remove_private:
push_options.append('remove-private') push_options.append('remove-private')
if options.notify is not None:
push_options.append("notify=%s" % options.notify)
if push_options: if push_options:
cmd += "%" + ",".join(push_options) cmd += "%" + ",".join(push_options)
if options.dry: if options.dry:

View File

@ -18,6 +18,7 @@
import argparse import argparse
import functools import functools
import os import os
import sys
import textwrap import textwrap
import fixtures import fixtures
@ -365,6 +366,19 @@ class GitReviewUnitTest(testtools.TestCase):
self.assertRaises(Exception, cmd._main) self.assertRaises(Exception, cmd._main)
self.assertTrue(resolve_tracking.called) self.assertTrue(resolve_tracking.called)
@mock.patch('sys.argv', ['argv0', '-n', '--notify', 'OWNER'])
@mock.patch('git_review.cmd.check_remote')
@mock.patch('git_review.cmd.rebase_changes')
@mock.patch('git_review.cmd.set_hooks_commit_msg')
@mock.patch('git_review.cmd.assert_one_change')
@mock.patch('sys.stdout', io.StringIO())
@mock.patch('sys.exit')
def test_notify(self, check_remote, rebase, set_hooks, assert_one, exit):
cmd._main()
sys.stdout.seek(0)
stdout = sys.stdout.read()
self.assertIn("notify=OWNER", stdout)
class DownloadFlagUnitTest(testtools.TestCase): class DownloadFlagUnitTest(testtools.TestCase):

View File

@ -0,0 +1,5 @@
---
features:
- |
Added the ``--notify`` option, which can be used to ensure specified
receivers receives email notifications