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: I6c5f510c031e8d45eb43c755bd7b5825287b0288
(cherry picked from commit 713c5872fb54c8094c0f5fa1523388efd81517cc)
diff --git a/project.py b/project.py
index 5c3c2ec..24816d0 100644
--- a/project.py
+++ b/project.py
@@ -1152,12 +1152,7 @@
     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 @@
     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: