##// END OF EJS Templates
store: simplify walking...
store: simplify walking - fold in main walking function - eliminate recursion (especially recursive yielding!) - eliminate default args

File last commit:

r6897:faea0d27 default
r6899:56a7a54e default
Show More
statichttprepo.py
78 lines | 2.5 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
#
Thomas Arendsen Hein
Updated copyright notices and add "and others" to "hg version"
r4635 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
mpm@selenic.com
Separate out old-http support...
r1101 #
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
Matt Mackall
Simplify i18n imports
r3891 from i18n import _
Joel Rosdahl
Remove unused imports
r6212 import changelog, httprangereader
Adrian Buehlmann
move filename encoding functions from util.py to new store.py
r6839 import repo, localrepo, manifest, util, store
Dirkjan Ochtman
make static-http work with empty repos (issue965)
r6028 import urllib, urllib2, errno
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:
Dirkjan Ochtman
make static-http work with empty repos (issue965)
r6028 num = inst.code == 404 and errno.ENOENT or None
raise IOError(num, 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"):
Benoit Boissinot
use forward "/" for internal path and static http, fix issue437
r3794 f = "/".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.ui = ui
Benoit Boissinot
switch to the .hg/store layout, fix the tests
r3853
Paul Bx
statichttprepo: fix calls on '/' URI (issue 747)
r5315 self.path = path.rstrip('/') + "/.hg"
mpm@selenic.com
Separate out old-http support...
r1101 self.opener = opener(self.path)
Dirkjan Ochtman
make static-http work with empty repos (issue965)
r6028
Benoit Boissinot
add "requires" file to the repo, specifying the requirements
r3851 # find requirements
try:
requirements = self.opener("requires").read().splitlines()
Dirkjan Ochtman
make static-http work with empty repos (issue965)
r6028 except IOError, inst:
if inst.errno == errno.ENOENT:
msg = _("'%s' does not appear to be an hg repository") % path
raise repo.RepoError(msg)
else:
requirements = []
Benoit Boissinot
add "requires" file to the repo, specifying the requirements
r3851 # check them
for r in requirements:
if r not in self.supported:
raise repo.RepoError(_("requirement '%s' not supported") % r)
# setup store
Matt Mackall
statichttp: use store class...
r6897 self.store = store.store(requirements, self.path, opener)
self.spath = self.store.path
self.sopener = self.store.opener
self.sjoin = self.store.join
Benoit Boissinot
add "requires" file to the repo, specifying the requirements
r3851
Benoit Boissinot
introduce localrepo.spath for the store path, sopener fixes
r3791 self.manifest = manifest.manifest(self.sopener)
self.changelog = changelog.changelog(self.sopener)
mpm@selenic.com
Separate out old-http support...
r1101 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 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'))
Thomas Arendsen Hein
Removed deprecated hg:// and old-http:// protocols (issue406)
r4853 return statichttprepository(ui, path[7:])