19 os.path.join("data", path + ".i"), |
19 os.path.join("data", path + ".i"), |
20 os.path.join("data", path + ".d")) |
20 os.path.join("data", path + ".d")) |
21 |
21 |
22 def read(self, node): |
22 def read(self, node): |
23 t = self.revision(node) |
23 t = self.revision(node) |
24 if t[:2] != '\1\n': |
24 if not t.startswith('\1\n'): |
25 return t |
25 return t |
26 s = t.find('\1\n', 2) |
26 s = t.find('\1\n', 2) |
27 return t[s+2:] |
27 return t[s+2:] |
28 |
28 |
29 def readmeta(self, node): |
29 def readmeta(self, node): |
30 t = self.revision(node) |
30 t = self.revision(node) |
31 if t[:2] != '\1\n': |
31 if not t.startswith('\1\n'): |
32 return t |
32 return t |
33 s = t.find('\1\n', 2) |
33 s = t.find('\1\n', 2) |
34 mt = t[2:s] |
34 mt = t[2:s] |
35 for l in mt.splitlines(): |
35 for l in mt.splitlines(): |
36 k, v = l.split(": ", 1) |
36 k, v = l.split(": ", 1) |
37 m[k] = v |
37 m[k] = v |
38 return m |
38 return m |
39 |
39 |
40 def add(self, text, meta, transaction, link, p1=None, p2=None): |
40 def add(self, text, meta, transaction, link, p1=None, p2=None): |
41 if meta or text[:2] == '\1\n': |
41 if meta or text.startswith('\1\n'): |
42 mt = "" |
42 mt = "" |
43 if meta: |
43 if meta: |
44 mt = [ "%s: %s\n" % (k, v) for k,v in meta.items() ] |
44 mt = [ "%s: %s\n" % (k, v) for k,v in meta.items() ] |
45 text = "\1\n" + "".join(mt) + "\1\n" + text |
45 text = "\1\n" + "".join(mt) + "\1\n" + text |
46 return self.addrevision(text, transaction, link, p1, p2) |
46 return self.addrevision(text, transaction, link, p1, p2) |
434 |
434 |
435 # used to avoid circular references so destructors work |
435 # used to avoid circular references so destructors work |
436 def opener(base): |
436 def opener(base): |
437 p = base |
437 p = base |
438 def o(path, mode="r"): |
438 def o(path, mode="r"): |
439 if p[:7] == "http://": |
439 if p.startswith("http://"): |
440 f = os.path.join(p, urllib.quote(path)) |
440 f = os.path.join(p, urllib.quote(path)) |
441 return httprangereader.httprangereader(f) |
441 return httprangereader.httprangereader(f) |
442 |
442 |
443 f = os.path.join(p, path) |
443 f = os.path.join(p, path) |
444 |
444 |
463 class RepoError(Exception): pass |
463 class RepoError(Exception): pass |
464 |
464 |
465 class localrepository: |
465 class localrepository: |
466 def __init__(self, ui, path=None, create=0): |
466 def __init__(self, ui, path=None, create=0): |
467 self.remote = 0 |
467 self.remote = 0 |
468 if path and path[:7] == "http://": |
468 if path and path.startswith("http://"): |
469 self.remote = 1 |
469 self.remote = 1 |
470 self.path = path |
470 self.path = path |
471 else: |
471 else: |
472 if not path: |
472 if not path: |
473 p = os.getcwd() |
473 p = os.getcwd() |