##// END OF EJS Templates
treediscovery: rename stop() in tests to fix failures on AIX....
treediscovery: rename stop() in tests to fix failures on AIX. It seems ksh, the default shell on AIX, does not permit the creation of a function called stop(). test-treediscovery.t and test-treediscovery-legacy.t both fail on AIX with error 'syntax error at line 25 : `(' unexpected'. Fix by renaming stop() in the scripts to tstop(). For completeness rename start() to tstart() to match. Both tests then pass on AIX. Add check for the use of stop() in a shell script to check-code.

File last commit:

r14462:f6a43367 default
r14831:0407b761 stable
Show More
hg-ssh
52 lines | 1.8 KiB | text/plain | TextLexer
#!/usr/bin/env python
#
# Copyright 2005-2007 by Intevation GmbH <intevation@intevation.de>
#
# Author(s):
# Thomas Arendsen Hein <thomas@intevation.de>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
"""
hg-ssh - a wrapper for ssh access to a limited set of mercurial repos
To be used in ~/.ssh/authorized_keys with the "command" option, see sshd(8):
command="hg-ssh path/to/repo1 /path/to/repo2 ~/repo3 ~user/repo4" ssh-dss ...
(probably together with these other useful options:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding)
This allows pull/push over ssh from/to the repositories given as arguments.
If all your repositories are subdirectories of a common directory, you can
allow shorter paths with:
command="cd path/to/my/repositories && hg-ssh repo1 subdir/repo2"
You can use pattern matching of your normal shell, e.g.:
command="cd repos && hg-ssh user/thomas/* projects/{mercurial,foo}"
"""
# enable importing on demand to reduce startup time
from mercurial import demandimport; demandimport.enable()
from mercurial import dispatch
import sys, os
cwd = os.getcwd()
allowed_paths = [os.path.normpath(os.path.join(cwd, os.path.expanduser(path)))
for path in sys.argv[1:]]
orig_cmd = os.getenv('SSH_ORIGINAL_COMMAND', '?')
if orig_cmd.startswith('hg -R ') and orig_cmd.endswith(' serve --stdio'):
path = orig_cmd[6:-14]
repo = os.path.normpath(os.path.join(cwd, os.path.expanduser(path)))
if repo in allowed_paths:
dispatch.dispatch(dispatch.request(['-R', repo, 'serve', '--stdio']))
else:
sys.stderr.write("Illegal repository %r\n" % repo)
sys.exit(-1)
else:
sys.stderr.write("Illegal command %r\n" % orig_cmd)
sys.exit(-1)