[PATCH] Get "hg serve" to print the URL being served
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] Get "hg serve" to print the URL being served
From: Bryan O'Sullivan <bos@serpentine.com>
If invoked with verbosity, print the URL at which we are serving.
Useful if you bind to any port with "-p 0", and need to know what port
the server is listening on.
manifest hash:
d317225606fbd2ec5819e1f266575b0485dfba79
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCyL9hywK+sNU5EO8RAjFQAJoDBRl5VoGIklxA1PdFGCt8Jb3iMQCeILeD
XAwnnSCy/IQ/MDfYf6z7oWI=
=FNVC
-----END PGP SIGNATURE-----
--- a/mercurial/commands.py Sun Jul 03 20:33:35 2005 -0800
+++ b/mercurial/commands.py Sun Jul 03 20:47:29 2005 -0800
@@ -8,7 +8,7 @@
import os, re, sys, signal
import fancyopts, ui, hg, util
from demandload import *
-demandload(globals(), "mdiff time hgweb traceback random signal errno version")
+demandload(globals(), "mdiff time hgweb traceback random signal socket errno version")
class UnknownCommand(Exception): pass
@@ -793,8 +793,21 @@
def serve(ui, repo, **opts):
"""export the repository via HTTP"""
- hgweb.server(repo.root, opts["name"], opts["templates"],
- opts["address"], opts["port"])
+ httpd = hgweb.create_server(repo.root, opts["name"], opts["templates"],
+ opts["address"], opts["port"])
+ if ui.verbose:
+ addr, port = httpd.socket.getsockname()
+ if addr == '0.0.0.0':
+ addr = socket.gethostname()
+ else:
+ try:
+ addr = socket.gethostbyaddr(addr)[0]
+ except: pass
+ if port != 80:
+ ui.status('listening on http://%s:%d/\n' % (addr, port))
+ else:
+ ui.status('listening on http://%s/\n' % addr)
+ httpd.serve_forever()
def status(ui, repo):
'''show changed files in the working directory
--- a/mercurial/hgweb.py Sun Jul 03 20:33:35 2005 -0800
+++ b/mercurial/hgweb.py Sun Jul 03 20:47:29 2005 -0800
@@ -694,7 +694,7 @@
else:
write(self.t("error"))
-def server(path, name, templates, address, port):
+def create_server(path, name, templates, address, port):
import BaseHTTPServer
import sys, os
@@ -759,5 +759,8 @@
sys.argv, sys.stdin, sys.stdout, sys.stderr = save
hg = hgweb(path, name, templates)
- httpd = BaseHTTPServer.HTTPServer((address, port), hgwebhandler)
+ return BaseHTTPServer.HTTPServer((address, port), hgwebhandler)
+
+def server(path, name, templates, address, port):
+ httpd = create_server(path, name, templates, address, port)
httpd.serve_forever()