Mercurial > public > mercurial-scm > hg-stable
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 |