Mercurial > public > mercurial-scm > hg-stable
diff mercurial/localrepo.py @ 1784:2e0a288ca93e
revalidate revlog data after locking the repo (issue132)
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Wed, 22 Feb 2006 07:26:29 +0100 |
parents | b9671b41e360 |
children | d5248726d22f |
line wrap: on
line diff
--- a/mercurial/localrepo.py Wed Feb 22 05:21:09 2006 +0100 +++ b/mercurial/localrepo.py Wed Feb 22 07:26:29 2006 +0100 @@ -235,8 +235,7 @@ if os.path.exists(self.join("journal")): self.ui.status(_("rolling back interrupted transaction\n")) transaction.rollback(self.opener, self.join("journal")) - self.manifest = manifest.manifest(self.opener) - self.changelog = changelog.changelog(self.opener) + self.reload() return True else: self.ui.warn(_("no interrupted transaction available\n")) @@ -250,10 +249,20 @@ self.ui.status(_("rolling back last transaction\n")) transaction.rollback(self.opener, self.join("undo")) util.rename(self.join("undo.dirstate"), self.join("dirstate")) - self.dirstate.read() + self.reload() + self.wreload() else: self.ui.warn(_("no undo information available\n")) + def wreload(self): + self.dirstate.read() + + def reload(self): + self.changelog.load() + self.manifest.load() + self.tagscache = None + self.nodetagscache = None + def do_lock(self, lockname, wait, releasefn=None, acquirefn=None): try: l = lock.lock(self.join(lockname), 0, releasefn) @@ -267,12 +276,12 @@ return l def lock(self, wait=1): - return self.do_lock("lock", wait) + return self.do_lock("lock", wait, acquirefn=self.reload) def wlock(self, wait=1): return self.do_lock("wlock", wait, self.dirstate.write, - self.dirstate.read) + self.wreload) def checkfilemerge(self, filename, text, filelog, manifest1, manifest2): "determine whether a new filenode is needed"