contrib/hg-ssh
changeset 5188 831ebc408ffb
parent 1640 9a5b778f7e2d
child 5197 55860a45bbf2
equal deleted inserted replaced
5187:c1dbc9ae8f2b 5188:831ebc408ffb
     1 #!/usr/bin/env python
     1 #!/usr/bin/env python
     2 #
     2 #
     3 # Copyright 2005, 2006 by Intevation GmbH <intevation@intevation.de>
     3 # Copyright 2005-2007 by Intevation GmbH <intevation@intevation.de>
     4 # Author(s):
     4 # Author(s):
     5 # Thomas Arendsen Hein <thomas@intevation.de>
     5 # Thomas Arendsen Hein <thomas@intevation.de>
     6 #
     6 #
     7 # This software may be used and distributed according to the terms
     7 # This software may be used and distributed according to the terms
     8 # of the GNU General Public License, incorporated herein by reference.
     8 # of the GNU General Public License, incorporated herein by reference.
    23 
    23 
    24 You can use pattern matching of your normal shell, e.g.:
    24 You can use pattern matching of your normal shell, e.g.:
    25 command="cd repos && hg-ssh user/thomas/* projects/{mercurial,foo}"
    25 command="cd repos && hg-ssh user/thomas/* projects/{mercurial,foo}"
    26 """
    26 """
    27 
    27 
    28 from mercurial import commands
    28 from mercurial import dispatch
    29 
    29 
    30 import sys, os
    30 import sys, os
    31 
    31 
    32 cwd = os.getcwd()
    32 cwd = os.getcwd()
    33 allowed_paths = [os.path.normpath(os.path.join(cwd, os.path.expanduser(path)))
    33 allowed_paths = [os.path.normpath(os.path.join(cwd, os.path.expanduser(path)))
    36 
    36 
    37 if orig_cmd.startswith('hg -R ') and orig_cmd.endswith(' serve --stdio'):
    37 if orig_cmd.startswith('hg -R ') and orig_cmd.endswith(' serve --stdio'):
    38     path = orig_cmd[6:-14]
    38     path = orig_cmd[6:-14]
    39     repo = os.path.normpath(os.path.join(cwd, os.path.expanduser(path)))
    39     repo = os.path.normpath(os.path.join(cwd, os.path.expanduser(path)))
    40     if repo in allowed_paths:
    40     if repo in allowed_paths:
    41         commands.dispatch(['-R', repo, 'serve', '--stdio'])
    41         dispatch.dispatch(['-R', repo, 'serve', '--stdio'])
    42     else:
    42     else:
    43         sys.stderr.write("Illegal repository %r\n" % repo)
    43         sys.stderr.write("Illegal repository %r\n" % repo)
    44         sys.exit(-1)
    44         sys.exit(-1)
    45 else:
    45 else:
    46     sys.stderr.write("Illegal command %r\n" % orig_cmd)
    46     sys.stderr.write("Illegal command %r\n" % orig_cmd)