comparison mercurial/filelog.py @ 7634:14a4337a9b9b

revlog: kill from-style imports They're slow.
author Matt Mackall <mpm@selenic.com>
date Sun, 11 Jan 2009 22:55:36 -0600
parents 4dd7b28003d2
children 46293a0c7e9f
comparison
equal deleted inserted replaced
7633:08cabecfa8a8 7634:14a4337a9b9b
3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> 3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
4 # 4 #
5 # This software may be used and distributed according to the terms 5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 7
8 from node import bin, nullid 8 import revlog
9 from revlog import revlog
10 9
11 class filelog(revlog): 10 class filelog(revlog.revlog):
12 def __init__(self, opener, path): 11 def __init__(self, opener, path):
13 revlog.__init__(self, opener, 12 revlog.revlog.__init__(self, opener,
14 "/".join(("data", self.encodedir(path + ".i")))) 13 "/".join(("data", self.encodedir(path + ".i"))))
15 14
16 # This avoids a collision between a file named foo and a dir named 15 # This avoids a collision between a file named foo and a dir named
17 # foo.i or foo.d 16 # foo.i or foo.d
18 def encodedir(self, path): 17 def encodedir(self, path):
53 mt = ["%s: %s\n" % (k, v) for k, v in meta.iteritems()] 52 mt = ["%s: %s\n" % (k, v) for k, v in meta.iteritems()]
54 text = "\1\n%s\1\n%s" % ("".join(mt), text) 53 text = "\1\n%s\1\n%s" % ("".join(mt), text)
55 return self.addrevision(text, transaction, link, p1, p2) 54 return self.addrevision(text, transaction, link, p1, p2)
56 55
57 def renamed(self, node): 56 def renamed(self, node):
58 if self.parents(node)[0] != nullid: 57 if self.parents(node)[0] != revlog.nullid:
59 return False 58 return False
60 m = self._readmeta(node) 59 m = self._readmeta(node)
61 if m and "copy" in m: 60 if m and "copy" in m:
62 return (m["copy"], bin(m["copyrev"])) 61 return (m["copy"], revlog.bin(m["copyrev"]))
63 return False 62 return False
64 63
65 def size(self, rev): 64 def size(self, rev):
66 """return the size of a given revision""" 65 """return the size of a given revision"""
67 66
68 # for revisions with renames, we have to go the slow way 67 # for revisions with renames, we have to go the slow way
69 node = self.node(rev) 68 node = self.node(rev)
70 if self.renamed(node): 69 if self.renamed(node):
71 return len(self.read(node)) 70 return len(self.read(node))
72 71
73 return revlog.size(self, rev) 72 return revlog.revlog.size(self, rev)
74 73
75 def cmp(self, node, text): 74 def cmp(self, node, text):
76 """compare text with a given file revision""" 75 """compare text with a given file revision"""
77 76
78 # for renames, we have to go the slow way 77 # for renames, we have to go the slow way
79 if self.renamed(node): 78 if self.renamed(node):
80 t2 = self.read(node) 79 t2 = self.read(node)
81 return t2 != text 80 return t2 != text
82 81
83 return revlog.cmp(self, node, text) 82 return revlog.revlog.cmp(self, node, text)