From 713c5872fb54c8094c0f5fa1523388efd81517cc Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Mon, 5 Nov 2018 13:21:52 -0800 Subject: [PATCH] upload: Unify option passing in ssh and other transports Pass options through the refspec for all transports, including ssh. This means the behavior will be more consistent between the ssh and https cases. A downside is that this prevents passing special characters in reviewer options. That already didn't work over https, so it seems okay. It could be fixed by using push options instead. Change-Id: Ia38d16e350cb8cb0de14463bfb3d9724e13bc4bf --- project.py | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/project.py b/project.py index 84e3684d..704680fd 100755 --- a/project.py +++ b/project.py @@ -1152,12 +1152,7 @@ class Project(object): cmd = ['push'] if url.startswith('ssh://'): - rp = ['gerrit receive-pack'] - for e in people[0]: - rp.append('--reviewer=%s' % sq(e)) - for e in people[1]: - rp.append('--cc=%s' % sq(e)) - cmd.append('--receive-pack=%s' % " ".join(rp)) + cmd.append('--receive-pack=gerrit receive-pack') for push_option in (push_options or []): cmd.append('-o') @@ -1177,15 +1172,14 @@ class Project(object): if auto_topic: ref_spec = ref_spec + '/' + branch.name - if not url.startswith('ssh://'): - rp = ['r=%s' % p for p in people[0]] + \ - ['cc=%s' % p for p in people[1]] - if private: - rp = rp + ['private'] - if wip: - rp = rp + ['wip'] - if rp: - ref_spec = ref_spec + '%' + ','.join(rp) + opts = ['r=%s' % p for p in people[0]] + opts += ['cc=%s' % p for p in people[1]] + if private: + opts += ['private'] + if wip: + opts += ['wip'] + if opts: + ref_spec = ref_spec + '%' + ','.join(opts) cmd.append(ref_spec) if GitCommand(self, cmd, bare=True).Wait() != 0: