Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/hgweb.py @ 1213:db9639b8594c
Clean up hgweb imports
Use demandloading
Pull function-local imports up to demandload
Scope hg and ui bits
author | mpm@selenic.com |
---|---|
date | Wed, 07 Sep 2005 23:13:12 -0700 |
parents | 27f2ec705332 |
children | f1895785c79e |
comparison
equal
deleted
inserted
replaced
1212:ccb6201e3f28 | 1213:db9639b8594c |
---|---|
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): |
169 | 169 |
170 | 170 |
171 class hgweb: | 171 class hgweb: |
172 def __init__(self, repo, name=None): | 172 def __init__(self, repo, name=None): |
173 if type(repo) == type(""): | 173 if type(repo) == type(""): |
174 self.repo = repository(ui(), repo) | 174 self.repo = hg.repository(ui.ui(), repo) |
175 else: | 175 else: |
176 self.repo = repo | 176 self.repo = repo |
177 | 177 |
178 self.mtime = -1 | 178 self.mtime = -1 |
179 self.reponame = name | 179 self.reponame = name |
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): |
658 | 658 |
659 files = mf.keys() | 659 files = mf.keys() |
660 files.sort() | 660 files.sort() |
661 | 661 |
662 if type == 'zip': | 662 if type == 'zip': |
663 import zipfile, tempfile | |
664 | |
665 tmp = tempfile.mkstemp()[1] | 663 tmp = tempfile.mkstemp()[1] |
666 try: | 664 try: |
667 zf = zipfile.ZipFile(tmp, "w", zipfile.ZIP_DEFLATED) | 665 zf = zipfile.ZipFile(tmp, "w", zipfile.ZIP_DEFLATED) |
668 | 666 |
669 for f in files: | 667 for f in files: |
677 f.close() | 675 f.close() |
678 finally: | 676 finally: |
679 os.unlink(tmp) | 677 os.unlink(tmp) |
680 | 678 |
681 else: | 679 else: |
682 import StringIO | |
683 import time | |
684 import tarfile | |
685 | |
686 tf = tarfile.TarFile.open(mode='w|' + type, fileobj=req.out) | 680 tf = tarfile.TarFile.open(mode='w|' + type, fileobj=req.out) |
687 mff = self.repo.manifest.readflags(mnode) | 681 mff = self.repo.manifest.readflags(mnode) |
688 mtime = int(time.time()) | 682 mtime = int(time.time()) |
689 | 683 |
690 if type == "gz": | 684 if type == "gz": |
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: |
960 {"header": header, "footer": footer}) | 952 {"header": header, "footer": footer}) |
961 | 953 |
962 def entries(**map): | 954 def entries(**map): |
963 parity = 0 | 955 parity = 0 |
964 for name, path in self.repos: | 956 for name, path in self.repos: |
965 u = ui() | 957 u = ui.ui() |
966 try: | 958 try: |
967 u.readconfig(file(os.path.join(path, '.hg', 'hgrc'))) | 959 u.readconfig(file(os.path.join(path, '.hg', 'hgrc'))) |
968 except IOError: | 960 except IOError: |
969 pass | 961 pass |
970 get = u.config | 962 get = u.config |