comparison mercurial/localrepo.py @ 13032:e41e2b79883d

dirstate: warn on invalid parents rather than aborting This allows more graceful recovery from some mangled dirstates
author Matt Mackall <mpm@selenic.com>
date Mon, 22 Nov 2010 12:43:31 -0600
parents cc4e13c92dfa
children 9beac11b8c56
comparison
equal deleted inserted replaced
13031:3da456d0c885 13032:e41e2b79883d
176 def manifest(self): 176 def manifest(self):
177 return manifest.manifest(self.sopener) 177 return manifest.manifest(self.sopener)
178 178
179 @propertycache 179 @propertycache
180 def dirstate(self): 180 def dirstate(self):
181 return dirstate.dirstate(self.opener, self.ui, self.root) 181 warned = [0]
182 def validate(node):
183 try:
184 r = self.changelog.rev(node)
185 return node
186 except error.LookupError:
187 if not warned[0]:
188 warned[0] = True
189 self.ui.warn(_("warning: ignoring unknown"
190 " working parent %s!\n" % short(node)))
191 return nullid
192
193 return dirstate.dirstate(self.opener, self.ui, self.root, validate)
182 194
183 def __getitem__(self, changeid): 195 def __getitem__(self, changeid):
184 if changeid is None: 196 if changeid is None:
185 return context.workingctx(self) 197 return context.workingctx(self)
186 return context.changectx(self, changeid) 198 return context.changectx(self, changeid)