equal
deleted
inserted
replaced
16 def __init__(self, url, opener): |
16 def __init__(self, url, opener): |
17 # we assume opener has HTTPRangeHandler |
17 # we assume opener has HTTPRangeHandler |
18 self.url = url |
18 self.url = url |
19 self.pos = 0 |
19 self.pos = 0 |
20 self.opener = opener |
20 self.opener = opener |
|
21 self.name = url |
21 def seek(self, pos): |
22 def seek(self, pos): |
22 self.pos = pos |
23 self.pos = pos |
23 def read(self, bytes=None): |
24 def read(self, bytes=None): |
24 req = urllib2.Request(self.url) |
25 req = urllib2.Request(self.url) |
25 end = '' |
26 end = '' |
54 data = data[self.pos:] |
55 data = data[self.pos:] |
55 elif bytes: |
56 elif bytes: |
56 data = data[:bytes] |
57 data = data[:bytes] |
57 self.pos += len(data) |
58 self.pos += len(data) |
58 return data |
59 return data |
|
60 def __iter__(self): |
|
61 return iter(self.read().splitlines(1)) |
|
62 def close(self): |
|
63 pass |
59 |
64 |
60 def build_opener(ui, authinfo): |
65 def build_opener(ui, authinfo): |
61 # urllib cannot handle URLs with embedded user or passwd |
66 # urllib cannot handle URLs with embedded user or passwd |
62 urlopener = url.opener(ui, authinfo) |
67 urlopener = url.opener(ui, authinfo) |
63 urlopener.add_handler(byterange.HTTPRangeHandler()) |
68 urlopener.add_handler(byterange.HTTPRangeHandler()) |
64 |
69 |
65 def opener(base): |
70 def opener(base): |
66 """return a function that opens files over http""" |
71 """return a function that opens files over http""" |
67 p = base |
72 p = base |
68 def o(path, mode="r"): |
73 def o(path, mode="r", atomictemp=None): |
|
74 if 'a' in mode or 'w' in mode: |
|
75 raise IOError('Permission denied') |
69 f = "/".join((p, urllib.quote(path))) |
76 f = "/".join((p, urllib.quote(path))) |
70 return httprangereader(f, urlopener) |
77 return httprangereader(f, urlopener) |
71 return o |
78 return o |
72 |
79 |
73 return opener |
80 return opener |
75 class statichttprepository(localrepo.localrepository): |
82 class statichttprepository(localrepo.localrepository): |
76 def __init__(self, ui, path): |
83 def __init__(self, ui, path): |
77 self._url = path |
84 self._url = path |
78 self.ui = ui |
85 self.ui = ui |
79 |
86 |
|
87 self.root = path |
80 self.path, authinfo = url.getauthinfo(path.rstrip('/') + "/.hg") |
88 self.path, authinfo = url.getauthinfo(path.rstrip('/') + "/.hg") |
81 |
89 |
82 opener = build_opener(ui, authinfo) |
90 opener = build_opener(ui, authinfo) |
83 self.opener = opener(self.path) |
91 self.opener = opener(self.path) |
84 |
92 |
114 |
122 |
115 self.manifest = manifest.manifest(self.sopener) |
123 self.manifest = manifest.manifest(self.sopener) |
116 self.changelog = changelog.changelog(self.sopener) |
124 self.changelog = changelog.changelog(self.sopener) |
117 self._tags = None |
125 self._tags = None |
118 self.nodetagscache = None |
126 self.nodetagscache = None |
|
127 self._branchcache = None |
|
128 self._branchcachetip = None |
119 self.encodepats = None |
129 self.encodepats = None |
120 self.decodepats = None |
130 self.decodepats = None |
121 |
131 |
122 def url(self): |
132 def url(self): |
123 return self._url |
133 return self._url |