comparison mercurial/commands.py @ 14647:2e9f379de0ac

serve: add --cmdserver option to communicate with hg over a pipe
author Idan Kamara <idankk86@gmail.com>
date Fri, 03 Jun 2011 17:27:41 +0300
parents e4cfdff6d3f4
children 35c2cc322ba8
comparison
equal deleted inserted replaced
14646:001788ef4bbb 14647:2e9f379de0ac
9 from lock import release 9 from lock import release
10 from i18n import _, gettext 10 from i18n import _, gettext
11 import os, re, difflib, time, tempfile, errno 11 import os, re, difflib, time, tempfile, errno
12 import hg, scmutil, util, revlog, extensions, copies, error, bookmarks 12 import hg, scmutil, util, revlog, extensions, copies, error, bookmarks
13 import patch, help, url, encoding, templatekw, discovery 13 import patch, help, url, encoding, templatekw, discovery
14 import archival, changegroup, cmdutil, sshserver, hbisect, hgweb, hgweb.server 14 import archival, changegroup, cmdutil, hbisect
15 import sshserver, hgweb, hgweb.server, commandserver
15 import merge as mergemod 16 import merge as mergemod
16 import minirst, revset, fileset 17 import minirst, revset, fileset
17 import dagparser, context, simplemerge 18 import dagparser, context, simplemerge
18 import random, setdiscovery, treediscovery, dagutil 19 import random, setdiscovery, treediscovery, dagutil
19 20
4416 _('name of the hgweb config file (see "hg help hgweb")'), _('FILE')), 4417 _('name of the hgweb config file (see "hg help hgweb")'), _('FILE')),
4417 ('', 'webdir-conf', '', _('name of the hgweb config file (DEPRECATED)'), 4418 ('', 'webdir-conf', '', _('name of the hgweb config file (DEPRECATED)'),
4418 _('FILE')), 4419 _('FILE')),
4419 ('', 'pid-file', '', _('name of file to write process ID to'), _('FILE')), 4420 ('', 'pid-file', '', _('name of file to write process ID to'), _('FILE')),
4420 ('', 'stdio', None, _('for remote clients')), 4421 ('', 'stdio', None, _('for remote clients')),
4422 ('', 'cmdserver', '', _('for remote clients'), _('MODE')),
4421 ('t', 'templates', '', _('web templates to use'), _('TEMPLATE')), 4423 ('t', 'templates', '', _('web templates to use'), _('TEMPLATE')),
4422 ('', 'style', '', _('template style to use'), _('STYLE')), 4424 ('', 'style', '', _('template style to use'), _('STYLE')),
4423 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')), 4425 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')),
4424 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))], 4426 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))],
4425 _('[OPTION]...')) 4427 _('[OPTION]...'))
4446 number it uses. 4448 number it uses.
4447 4449
4448 Returns 0 on success. 4450 Returns 0 on success.
4449 """ 4451 """
4450 4452
4451 if opts["stdio"]: 4453 if opts["stdio"] and opts["cmdserver"]:
4454 raise util.Abort(_("cannot use --stdio with --cmdserver"))
4455
4456 def checkrepo():
4452 if repo is None: 4457 if repo is None:
4453 raise error.RepoError(_("There is no Mercurial repository here" 4458 raise error.RepoError(_("There is no Mercurial repository here"
4454 " (.hg not found)")) 4459 " (.hg not found)"))
4460
4461 if opts["stdio"]:
4462 checkrepo()
4455 s = sshserver.sshserver(ui, repo) 4463 s = sshserver.sshserver(ui, repo)
4456 s.serve_forever() 4464 s.serve_forever()
4465
4466 if opts["cmdserver"]:
4467 checkrepo()
4468 s = commandserver.server(ui, repo, opts["cmdserver"])
4469 return s.serve()
4457 4470
4458 # this way we can check if something was given in the command-line 4471 # this way we can check if something was given in the command-line
4459 if opts.get('port'): 4472 if opts.get('port'):
4460 opts['port'] = util.getport(opts.get('port')) 4473 opts['port'] = util.getport(opts.get('port'))
4461 4474