4 # Copyright 2005 Matt Mackall <mpm@selenic.com> |
4 # Copyright 2005 Matt Mackall <mpm@selenic.com> |
5 # |
5 # |
6 # This software may be used and distributed according to the terms |
6 # This software may be used and distributed according to the terms |
7 # of the GNU General Public License, incorporated herein by reference. |
7 # of the GNU General Public License, incorporated herein by reference. |
8 |
8 |
9 import os, cgi, time, re, socket, sys, zlib, errno |
9 import os, cgi, sys |
10 import mdiff |
10 from demandload import demandload |
11 from hg import * |
11 demandload(globals(), "mdiff time re socket zlib errno ui hg") |
12 from ui import * |
12 demandload(globals(), "zipfile tempfile StringIO tarfile BaseHTTPServer") |
13 |
13 from node import * |
14 |
14 |
15 def templatepath(): |
15 def templatepath(): |
16 for f in "templates", "../templates": |
16 for f in "templates", "../templates": |
17 p = os.path.join(os.path.dirname(__file__), f) |
17 p = os.path.join(os.path.dirname(__file__), f) |
18 if os.path.isdir(p): |
18 if os.path.isdir(p): |
181 |
181 |
182 def refresh(self): |
182 def refresh(self): |
183 s = os.stat(os.path.join(self.repo.root, ".hg", "00changelog.i")) |
183 s = os.stat(os.path.join(self.repo.root, ".hg", "00changelog.i")) |
184 if s.st_mtime != self.mtime: |
184 if s.st_mtime != self.mtime: |
185 self.mtime = s.st_mtime |
185 self.mtime = s.st_mtime |
186 self.repo = repository(self.repo.ui, self.repo.root) |
186 self.repo = hg.repository(self.repo.ui, self.repo.root) |
187 self.maxchanges = self.repo.ui.config("web", "maxchanges", 10) |
187 self.maxchanges = self.repo.ui.config("web", "maxchanges", 10) |
188 self.maxfiles = self.repo.ui.config("web", "maxchanges", 10) |
188 self.maxfiles = self.repo.ui.config("web", "maxchanges", 10) |
189 self.allowpull = self.repo.ui.configbool("web", "allowpull", True) |
189 self.allowpull = self.repo.ui.configbool("web", "allowpull", True) |
190 |
190 |
191 def date(self, cs): |
191 def date(self, cs): |
847 port = int(repo.ui.config("web", "port", 8000)) |
841 port = int(repo.ui.config("web", "port", 8000)) |
848 use_ipv6 = repo.ui.configbool("web", "ipv6") |
842 use_ipv6 = repo.ui.configbool("web", "ipv6") |
849 accesslog = openlog(repo.ui.config("web", "accesslog", "-"), sys.stdout) |
843 accesslog = openlog(repo.ui.config("web", "accesslog", "-"), sys.stdout) |
850 errorlog = openlog(repo.ui.config("web", "errorlog", "-"), sys.stderr) |
844 errorlog = openlog(repo.ui.config("web", "errorlog", "-"), sys.stderr) |
851 |
845 |
852 import BaseHTTPServer |
|
853 |
|
854 class IPv6HTTPServer(BaseHTTPServer.HTTPServer): |
846 class IPv6HTTPServer(BaseHTTPServer.HTTPServer): |
855 address_family = getattr(socket, 'AF_INET6', None) |
847 address_family = getattr(socket, 'AF_INET6', None) |
856 |
848 |
857 def __init__(self, *args, **kwargs): |
849 def __init__(self, *args, **kwargs): |
858 if self.address_family is None: |
850 if self.address_family is None: |