[PATCH V2] bookmarks: simplify iscurrent to isactivewdirparent (API)

Augie Fackler raf at durin42.com
Fri May 8 09:57:07 CDT 2015


On Thu, May 07, 2015 at 03:52:56PM -0700, Ryan McElroy wrote:
> # HG changeset patch
> # User Ryan McElroy <rmcelroy at fb.com>
> # Date 1429040715 25200
> #      Tue Apr 14 12:45:15 2015 -0700
> # Node ID 1c885f2c5086d419c8a082ff7204fbce27c6c395
> # Parent  10f712a17574852069d60db0567b2246a389d13f
> bookmarks: simplify iscurrent to isactivewdirparent (API)

Queued, thanks.

Something about the docstring on isactivewdirparent feels unclear, but
I can't put my finger on it right now, and this is a strict
improvement over the past, so I'm just queueing it in the name of
not letting the perfect be the enemy of teh good.

>
> Previously this function accepted two optional parameters that were unused by
> any callers and complicated the function.
>
> Today, the terms 'active' and 'current' are interchangeably used throughout the
> codebase in reference to the active bookmark (the bookmark that will be updated
> with the next commit). This leads to confusion among developers and users.
> This patch is part of a series to standardize the usage to 'active' throughout
> the mercurial codebase and user interface.
>
> diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py
> --- a/mercurial/bookmarks.py
> +++ b/mercurial/bookmarks.py
> @@ -165,17 +165,18 @@ def deactivate(repo):
>      finally:
>          wlock.release()
>
> -def iscurrent(repo, mark=None, parents=None):
> -    '''Tell whether the current bookmark is also active
> +def isactivewdirparent(repo):
> +    """
> +    Tell whether the 'active' bookmark (the one that follows new commits)
> +    points to one of the parents of the current working directory (wdir).
>
> -    I.e., the bookmark listed in .hg/bookmarks.current also points to a
> -    parent of the working directory.
> -    '''
> -    if not mark:
> -        mark = repo._activebookmark
> -    if not parents:
> -        parents = [p.node() for p in repo[None].parents()]
> +    While this is normally the case, it can on occasion be false; for example,
> +    immediately after a pull, the active bookmark can be moved to point
> +    to a place different than the wdir. This is solved by running `hg update`.
> +    """
> +    mark = repo._activebookmark
>      marks = repo._bookmarks
> +    parents = [p.node() for p in repo[None].parents()]
>      return (mark in marks and marks[mark] in parents)
>
>  def deletedivergent(repo, deletefrom, bm):
> @@ -201,7 +202,7 @@ def calculateupdate(ui, repo, checkout):
>      movemarkfrom = None
>      if checkout is None:
>          curmark = repo._activebookmark
> -        if iscurrent(repo):
> +        if isactivewdirparent(repo):
>              movemarkfrom = repo['.'].node()
>          elif curmark:
>              ui.status(_("updating to active bookmark %s\n") % curmark)
> diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
> --- a/mercurial/cmdutil.py
> +++ b/mercurial/cmdutil.py
> @@ -2721,7 +2721,7 @@ def buildcommittext(repo, ctx, subs, ext
>          edittext.append(_("HG: branch merge"))
>      if ctx.branch():
>          edittext.append(_("HG: branch '%s'") % ctx.branch())
> -    if bookmarks.iscurrent(repo):
> +    if bookmarks.isactivewdirparent(repo):
>          edittext.append(_("HG: bookmark '%s'") % repo._activebookmark)
>      edittext.extend([_("HG: subrepo %s") % s for s in subs])
>      edittext.extend([_("HG: added %s") % f for f in added])
> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
> --- a/mercurial/templatekw.py
> +++ b/mercurial/templatekw.py
> @@ -226,7 +226,7 @@ def showcurrentbookmark(**args):
>      associated with the changeset"""
>      import bookmarks as bookmarks # to avoid circular import issues
>      repo = args['repo']
> -    if bookmarks.iscurrent(repo):
> +    if bookmarks.isactivewdirparent(repo):
>          current = repo._activebookmark
>          if current in args['ctx'].bookmarks():
>              return current
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list