Mercurial > public > mercurial-scm > hg
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) |