diff options
author | Orgad Shaneh <orgads@gmail.com> | 2013-04-10 22:24:17 +0300 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-04-11 07:24:55 +0000 |
commit | eecfa12b271ba1acaff41b2f333b5e7f61daa616 (patch) | |
tree | ad1d023cf737764d0b031ae0768233a1f66c717d | |
parent | 5fe0860ca1a19884e3baa05ba451f2e77494883a (diff) |
TrivialRebase: Support alternative ssh executable
like plink.
Two arguments are added:
--ssh - ssh executable to be used (default: "ssh")
--ssh-port-flag - port flag for ssh (default: "-p")
Since ssh-port-flag receives a flag it can only be
used with --arg=value notation
plink requires "--ssh plink --ssh-port-flag=-P"
Change-Id: I7f494e099de9a9877a3336fcd4e735a9d9dfd921
-rwxr-xr-x | contrib/trivial_rebase.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/contrib/trivial_rebase.py b/contrib/trivial_rebase.py index ed98f4498b..3e77c4c9cf 100755 --- a/contrib/trivial_rebase.py +++ b/contrib/trivial_rebase.py @@ -55,6 +55,9 @@ class TrivialRebase: parser.add_argument("--server-port", dest="port", default='29418', help="Port to connect to Gerrit's SSH daemon " "[default: %(default)s]") + parser.add_argument("--ssh", default="ssh", help="SSH executable") + parser.add_argument("--ssh-port-flag", dest="ssh_port_flag", default="-p", help="SSH port flag") + args = parser.parse_known_args()[0] if None in [args.changeUrl, args.project, args.commit, args.patchset]: parser.error("Incomplete arguments") @@ -68,6 +71,8 @@ class TrivialRebase: self.private_key_path = args.private_key_path self.server = args.server self.port = args.port + self.ssh = args.ssh + self.ssh_port_flag = args.ssh_port_flag class CheckCallError(OSError): """CheckCall() returned non-0.""" @@ -85,7 +90,7 @@ class TrivialRebase: Works on python 2.4 """ try: - process = subprocess.Popen(command, cwd=cwd, stdout=subprocess.PIPE) + process = subprocess.Popen(command, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) std_out, std_err = process.communicate() except OSError, e: raise self.CheckCallError(command, cwd, e.errno, None) @@ -95,7 +100,7 @@ class TrivialRebase: def GsqlQuery(self, sql_query): """Runs a gerrit gsql query and returns the result""" - gsql_cmd = ['ssh', '-p', self.port, self.server, 'gerrit', 'gsql', + gsql_cmd = [self.ssh, self.ssh_port_flag, self.port, self.server, 'gerrit', 'gsql', '--format', 'JSON', '-c', sql_query] try: (gsql_out, _gsql_stderr) = self.CheckCall(gsql_cmd) @@ -150,7 +155,7 @@ class TrivialRebase: return patch_id_process.communicate()[0] def SuExec(self, as_user, cmd): - suexec_cmd = ['ssh', '-l', "Gerrit Code Review", '-p', self.port, self.server] + suexec_cmd = [self.ssh, '-l', "Gerrit Code Review", self.ssh_port_flag, self.port, self.server] if self.private_key_path: suexec_cmd += ['-i', self.private_key_path] suexec_cmd += ['suexec', '--as', as_user, '--', cmd] @@ -194,8 +199,8 @@ class TrivialRebase: # commit message changed comment_msg = ("\'--message=New patchset patch-id matches previous patchset" ", but commit message has changed.'") - comment_cmd = ['ssh', '-p', self.port, self.server, 'gerrit', 'approve', - '--project', self.project, comment_msg, self.commit] + comment_cmd = [self.ssh, self.ssh_port_flag, self.port, self.server, 'gerrit', + 'approve', '--project', self.project, comment_msg, self.commit] self.CheckCall(comment_cmd) return |