# HG changeset patch # User FUJIWARA Katsunori # Date 1464882260 -32400 # Node ID f92afd23a0992ea9e7cb5519d02f8724d08c28c7 # Parent 76b07a5c064b60950dc4d3d39d92c09ed5c9acfd bookmarks: make writing files out avoid ambiguity of file stat Cached attribute repo._bookmarks uses stat of '.hg/bookmarks' and '.hg/bookmarks.current' files to examine validity of cached contents. If writing these files out keeps ctime, mtime and size of them, change is overlooked, and old contents cached before change isn't invalidated as expected. To avoid ambiguity of file stat, this patch writes '.hg/bookmarks' and '.hg/bookmarks.current' files out with checkambig=True. This patch is a part of "Exact Cache Validation Plan": https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan diff -r 76b07a5c064b -r f92afd23a099 mercurial/bookmarks.py --- a/mercurial/bookmarks.py Fri Jun 03 00:44:20 2016 +0900 +++ b/mercurial/bookmarks.py Fri Jun 03 00:44:20 2016 +0900 @@ -117,7 +117,8 @@ rbm._writeactive() with repo.wlock(): - file_ = repo.vfs('bookmarks', 'w', atomictemp=True) + file_ = repo.vfs('bookmarks', 'w', atomictemp=True, + checkambig=True) try: self._write(file_) except: # re-raises @@ -131,7 +132,8 @@ return with self._repo.wlock(): if self._active is not None: - f = self._repo.vfs('bookmarks.current', 'w', atomictemp=True) + f = self._repo.vfs('bookmarks.current', 'w', atomictemp=True, + checkambig=True) try: f.write(encoding.fromlocal(self._active)) finally: