[PATCH 6 of 6] phases: make writing phaseroots file out avoid ambiguity of file stat

Augie Fackler raf at durin42.com
Mon Jun 6 11:49:18 EDT 2016


On Fri, Jun 03, 2016 at 12:47:46AM +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1464882260 -32400
> #      Fri Jun 03 00:44:20 2016 +0900
> # Node ID b858e69570b9ca7ab50f3f4379d808a6a31c582d
> # Parent  acdd1b25ab08f8d8e3a3a2ed0403cd6d5dfbd099
> phases: make writing phaseroots file out avoid ambiguity of file stat

queued this, thanks

>
> Cached attribute repo._phasecache uses stat of '.hg/phaseroots' file
> to examine validity of cached contents. If writing '.hg/phaseroots'
> file out keeps ctime, mtime and size of it, change is overlooked, and
> old contents cached before change isn't invalidated as expected.
>
> To avoid ambiguity of file stat, this patch writes '.hg/phaseroots'
> file out with checkambig=True.
>
> This patch is a part of "Exact Cache Validation Plan":
>
>     https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
>
> diff --git a/mercurial/phases.py b/mercurial/phases.py
> --- a/mercurial/phases.py
> +++ b/mercurial/phases.py
> @@ -251,7 +251,7 @@ class phasecache(object):
>      def write(self):
>          if not self.dirty:
>              return
> -        f = self.opener('phaseroots', 'w', atomictemp=True)
> +        f = self.opener('phaseroots', 'w', atomictemp=True, checkambig=True)
>          try:
>              self._write(f)
>          finally:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list