comparison mercurial/context.py @ 3235:e8199702cf4e

Make filectx lazier Lazy opening of filelog, lazy lookup of filenode and changeid
author Matt Mackall <mpm@selenic.com>
date Mon, 02 Oct 2006 14:23:38 -0500
parents 9e8dd6114a4e
children 696c656202a0
comparison
equal deleted inserted replaced
3234:cac7be0b9b99 3235:e8199702cf4e
112 112
113 assert changeid is not None or fileid is not None 113 assert changeid is not None or fileid is not None
114 114
115 if filelog: 115 if filelog:
116 self._filelog = filelog 116 self._filelog = filelog
117 else:
118 self._filelog = self._repo.file(self._path)
119 117
120 if fileid is None: 118 if fileid is None:
121 self._changeid = changeid 119 self._changeid = changeid
122 else: 120 else:
123 self._filenode = self._filelog.lookup(fileid) 121 self._fileid = fileid
124 self._changeid = self._filelog.linkrev(self._filenode)
125 122
126 def __getattr__(self, name): 123 def __getattr__(self, name):
127 if name == '_changectx': 124 if name == '_changectx':
128 self._changectx = changectx(self._repo, self._changeid) 125 self._changectx = changectx(self._repo, self._changeid)
129 return self._changectx 126 return self._changectx
127 elif name == '_filelog':
128 self._filelog = self._repo.file(self._path)
129 return self._filelog
130 elif name == '_changeid':
131 self._changeid = self._filelog.linkrev(self._filenode)
132 return self._changeid
130 elif name == '_filenode': 133 elif name == '_filenode':
131 self._filenode = self._changectx.filenode(self._path) 134 if hasattr(self, "_fileid"):
135 self._filenode = self._filelog.lookup(self._fileid)
136 else:
137 self._filenode = self._changectx.filenode(self._path)
132 return self._filenode 138 return self._filenode
133 elif name == '_filerev': 139 elif name == '_filerev':
134 self._filerev = self._filelog.rev(self._filenode) 140 self._filerev = self._filelog.rev(self._filenode)
135 return self._filerev 141 return self._filerev
136 else: 142 else: