Skip to content
Snippets Groups Projects
Commit 86fc364ca5f8 authored by kiilerix's avatar kiilerix
Browse files

sshrepo: don't quote obviously safe strings (issue2983)

This restores compatibility with hg-over-ssh servers that don't parse
commandlines as sh does but works ok in the most common cases.
parent 013688350c7d
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
import re
from i18n import _
import util, error, wireproto
......@@ -20,6 +21,8 @@
def _serverquote(s):
'''quote a string for the remote shell ... which we assume is sh'''
if re.match(r'[a-zA-Z0-9._\-/]*$', s):
return s
return "'%s'" % s.replace("'", "'\\''")
class sshrepository(wireproto.wirerepository):
......
......@@ -105,13 +105,13 @@
output of dummyssh
$ cat dummylog
Got arguments 1:user@dummy 2:'hg' init 'remote2'
Got arguments 1:user@dummy 2:'hg' -R 'remote2' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote2' serve --stdio
Got arguments 1:user@dummy 2:'hg' init 'remote1'
Got arguments 1:user@dummy 2:'hg' -R 'remote1' serve --stdio
Got arguments 1:user@dummy 2:'hg' init 'remote1'
Got arguments 1:user@dummy 2:'hg' init 'remote1'
Got arguments 1:user@dummy 2:hg init remote2
Got arguments 1:user@dummy 2:hg -R remote2 serve --stdio
Got arguments 1:user@dummy 2:hg -R remote2 serve --stdio
Got arguments 1:user@dummy 2:hg init remote1
Got arguments 1:user@dummy 2:hg -R remote1 serve --stdio
Got arguments 1:user@dummy 2:hg init remote1
Got arguments 1:user@dummy 2:hg init remote1
comparing repositories
......
......@@ -275,13 +275,13 @@
3fb238f49e8c
$ cat dummylog
Got arguments 1:user@dummy 2:'hg' -R 'nonexistent' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R '/$TESTTMP/nonexistent' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'local' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R '$TESTTMP/local' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
Got arguments 1:user@dummy 2:hg -R /$TESTTMP/nonexistent serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R local serve --stdio
Got arguments 1:user@dummy 2:hg -R $TESTTMP/local serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
changegroup-in-remote hook: HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
......@@ -287,11 +287,11 @@
changegroup-in-remote hook: HG_NODE=a28a9d1a809cab7d4e2fde4bee738a9ede948b60 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
......@@ -297,5 +297,5 @@
changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1
Got arguments 1:user@dummy 2:'hg' -R 'remote' serve --stdio
Got arguments 1:user@dummy 2:'hg' init 'a repo'
Got arguments 1:user@dummy 2:'hg' -R 'a repo' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'a repo' serve --stdio
Got arguments 1:user@dummy 2:hg -R remote serve --stdio
Got arguments 1:user@dummy 2:hg init 'a repo'
Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
......@@ -98,8 +98,8 @@
no changes found
$ cat dummylog
Got arguments 1:user@dummy 2:'hg' -R 'cloned' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R 'sub' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R '$TESTTMP/cloned' serve --stdio
Got arguments 1:user@dummy 2:'hg' -R '$TESTTMP/sub' serve --stdio
Got arguments 1:user@dummy 2:hg -R cloned serve --stdio
Got arguments 1:user@dummy 2:hg -R sub serve --stdio
Got arguments 1:user@dummy 2:hg -R $TESTTMP/cloned serve --stdio
Got arguments 1:user@dummy 2:hg -R $TESTTMP/sub serve --stdio
$ rm $BINDIR/ssh
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment