diff -r ea8e27e6098d -r d73f23344dc7 mercurial/hgweb/__init__.py --- a/mercurial/hgweb/__init__.py Sat Oct 31 21:57:45 2015 +0900 +++ b/mercurial/hgweb/__init__.py Sat Oct 31 22:15:16 2015 +0900 @@ -13,6 +13,7 @@ from ..i18n import _ from .. import ( + error, util, ) @@ -83,3 +84,32 @@ def run(self): self.httpd.serve_forever() + +def createservice(ui, repo, opts): + # this way we can check if something was given in the command-line + if opts.get('port'): + opts['port'] = util.getport(opts.get('port')) + + if repo: + baseui = repo.baseui + else: + baseui = ui + optlist = ("name templates style address port prefix ipv6" + " accesslog errorlog certificate encoding") + for o in optlist.split(): + val = opts.get(o, '') + if val in (None, ''): # should check against default options instead + continue + baseui.setconfig("web", o, val, 'serve') + if repo and repo.ui != baseui: + repo.ui.setconfig("web", o, val, 'serve') + + o = opts.get('web_conf') or opts.get('webdir_conf') + if not o: + if not repo: + raise error.RepoError(_("there is no Mercurial repository" + " here (.hg not found)")) + o = repo + + app = hgweb(o, baseui=baseui) + return httpservice(ui, app, opts)