##// END OF EJS Templates
clean up hg.py: move repo constructor code into each repo module
clean up hg.py: move repo constructor code into each repo module

File last commit:

r2740:386f04d6 default
r2740:386f04d6 default
Show More
statichttprepo.py
64 lines | 2.0 KiB | text/x-python | PythonLexer
mpm@selenic.com
Separate out old-http support...
r1101 # statichttprepo.py - simple http repository class for mercurial
#
# This provides read-only repo access to repositories exported via static http
#
# Copyright 2005 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
Vadim Gelfer
clean up hg.py: move repo constructor code into each repo module
r2740 from demandload import *
from i18n import gettext as _
Bryan O'Sullivan
Move urllib error handling from revlog into statichttprepo, where it belongs.
r1325 demandload(globals(), "changelog filelog httprangereader")
Vadim Gelfer
clean up hg.py: move repo constructor code into each repo module
r2740 demandload(globals(), "localrepo manifest os urllib urllib2 util")
Bryan O'Sullivan
Move urllib error handling from revlog into statichttprepo, where it belongs.
r1325
class rangereader(httprangereader.httprangereader):
def read(self, size=None):
try:
return httprangereader.httprangereader.read(self, size)
Thomas Arendsen Hein
Catch urllib errors for old-http in a nicer way.
r1821 except urllib2.HTTPError, inst:
raise IOError(None, inst)
Bryan O'Sullivan
Move urllib error handling from revlog into statichttprepo, where it belongs.
r1325 except urllib2.URLError, inst:
Thomas Arendsen Hein
Catch urllib errors for old-http in a nicer way.
r1821 raise IOError(None, inst.reason[1])
mpm@selenic.com
Separate out old-http support...
r1101
def opener(base):
"""return a function that opens files over http"""
p = base
def o(path, mode="r"):
f = os.path.join(p, urllib.quote(path))
Bryan O'Sullivan
Move urllib error handling from revlog into statichttprepo, where it belongs.
r1325 return rangereader(f)
mpm@selenic.com
Separate out old-http support...
r1101 return o
class statichttprepository(localrepo.localrepository):
def __init__(self, ui, path):
Vadim Gelfer
hooks: add url to changegroup, incoming, prechangegroup, pretxnchangegroup hooks...
r2673 self._url = path
mpm@selenic.com
Separate out old-http support...
r1101 self.path = (path + "/.hg")
self.ui = ui
mason@suse.com
Implement revlogng....
r2072 self.revlogversion = 0
mpm@selenic.com
Separate out old-http support...
r1101 self.opener = opener(self.path)
self.manifest = manifest.manifest(self.opener)
self.changelog = changelog.changelog(self.opener)
self.tagscache = None
self.nodetagscache = None
Benoit Boissinot
cleanup of revlog.group when repository is local...
r1598 self.encodepats = None
self.decodepats = None
mpm@selenic.com
Separate out old-http support...
r1101
Vadim Gelfer
hooks: add url to changegroup, incoming, prechangegroup, pretxnchangegroup hooks...
r2673 def url(self):
return 'static-' + self._url
mpm@selenic.com
Separate out old-http support...
r1101 def dev(self):
return -1
def local(self):
return False
Vadim Gelfer
clean up hg.py: move repo constructor code into each repo module
r2740
def instance(ui, path, create):
if create:
raise util.Abort(_('cannot create new static-http repository'))
if path.startswith('old-http:'):
ui.warn(_("old-http:// syntax is deprecated, "
"please use static-http:// instead\n"))
path = path[4:]
else:
path = path[7:]
return statichttprepository(ui, path)