summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorOrgad Shaneh <orgads@gmail.com>2013-04-10 22:24:17 +0300
committerGerrit Code Review <noreply-gerritcodereview@google.com>2013-04-11 07:24:55 +0000
commiteecfa12b271ba1acaff41b2f333b5e7f61daa616 (patch)
treead1d023cf737764d0b031ae0768233a1f66c717d /contrib
parent5fe0860ca1a19884e3baa05ba451f2e77494883a (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
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/trivial_rebase.py15
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