##// END OF EJS Templates
localrepo: decorate dirstate() with filecache...
localrepo: decorate dirstate() with filecache We refresh the stat info when releasing repo.wlock(), right after writing it. Also, invalidate the dirstate by deleting its attribute. This will force a stat by the decorator that actually checks if anything changed, rather than reading it again every time. Note that prior to this, there was a single dirstate instance created for a localrepo. It was invalidated by calling dirstate.invalidated(), clearing its internal attributes. As a consequence, the following construct is no longer safe: ds = repo.dirstate # keep a reference to the repo's dirstate wlock = repo.wlock() try: ds.setparents(...) finally: wlock.release() # dirstate should be written here Since it's possible that the dirstate was modified between lines #1 and #2, therefore changes to the old dirstate won't get written when the lock releases, because a new instance was created by the decorator.
Idan Kamara -
r14930:372d9d8b default
Show More
Name Size Modified Last Commit Author
/ mercurial / help
config.txt Loading ...
dates.txt Loading ...
diffs.txt Loading ...
environment.txt Loading ...
extensions.txt Loading ...
filesets.txt Loading ...
glossary.txt Loading ...
hgignore.txt Loading ...
hgweb.txt Loading ...
merge-tools.txt Loading ...
multirevs.txt Loading ...
patterns.txt Loading ...
revisions.txt Loading ...
revsets.txt Loading ...
subrepos.txt Loading ...
templates.txt Loading ...
urls.txt Loading ...