[PATCH 02 of 18] phases: basic I/O logic

timeless timeless at gmail.com
Tue Oct 11 07:31:19 CDT 2011


This has "phrases" is that a typo for "phases"?

On 10/10/11, pierre-yves.david at logilab.fr <pierre-yves.david at logilab.fr> wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
> # Date 1318159211 -7200
> # Node ID a021813a715118f511262e67a3b80179207efe5b
> # Parent  712a670bb8ce039782649741a8c409de66968d42
> phases: basic I/O logic
>
> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -6,11 +6,11 @@
>  # GNU General Public License version 2 or any later version.
>
>  from node import bin, hex, nullid, nullrev, short
>  from i18n import _
>  import repo, changegroup, subrepo, discovery, pushkey
> -import changelog, dirstate, filelog, manifest, context, bookmarks
> +import changelog, dirstate, filelog, manifest, context, bookmarks, phases
>  import lock, transaction, store, encoding
>  import scmutil, util, extensions, hook, error, revset
>  import match as matchmod
>  import merge as mergemod
>  import tags as tagsmod
> @@ -165,10 +165,14 @@ class localrepository(repo.repository):
>
>      @filecache('bookmarks.current')
>      def _bookmarkcurrent(self):
>          return bookmarks.readcurrent(self)
>
> +    @filecache('phases-heads')
> +    def _phasesheads(self):
> +        return phases.readheads(self)
> +
>      @filecache('00changelog.i', True)
>      def changelog(self):
>          c = changelog.changelog(self.sopener)
>          if 'HG_PENDING' in os.environ:
>              p = os.environ['HG_PENDING']
> diff --git a/mercurial/phases.py b/mercurial/phases.py
> --- a/mercurial/phases.py
> +++ b/mercurial/phases.py
> @@ -5,7 +5,39 @@
>  #                Augie Fackler     <durin42 at gmail.com>
>  #
>  # This software may be used and distributed according to the terms of the
>  # GNU General Public License version 2 or any later version.
>
> +from node import nullid
> +
>  allphases = range(2)
>  trackedphases = allphases[:-1]
> +
> +### I/O code
> +############
> +
> +def readheads(repo):
> +    """Read phrases head from disk"""
> +    try:
> +        heads = [set()]
> +        f = repo.sopener('phrases-heads')
> +        try:
> +            for line in f:
> +                phrase, nh = line.strip().split()
> +                heads[int(phrase)].add(bin(nh))
> +        finally:
> +            f.close()
> +    except IOError:
> +        pass # gracefully filled bellow
> +    if not heads[0]:
> +        heads[0].add(nullid)
> +    return heads
> +
> +def writeheads(repo):
> +    """Write phrases head from disk"""
> +    f = repo.sopener('phrases-heads', 'w', atomictemp=True)
> +    try:
> +        for phrase, heads in enumerate(repo._phraseheads):
> +            for h in heads:
> +                f.write('%i %s\n' % (phrase, hex(h)))
> +    finally:
> +        f.close()
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>

-- 
Sent from my mobile device


More information about the Mercurial-devel mailing list