[PATCH 1 of 2] graph: in hgrc specify line width for main branch

Martin Geisler mg at aragost.com
Thu Feb 2 15:23:53 UTC 2012


Constantine Linnick <theaspect at gmail.com> writes:

> # HG changeset patch
> # User Constantine Linnick <theaspect at gmail.com>
> # Date 1327235726 -25200
> # Node ID 537733973603cb4f974f01aecd51923da17e314f
> # Parent  878bc4a62a735a1624e9b69c672d5fb5074d4855
> graph: in hgrc specify line width for main branch
>
> You can specify width to visually distinguish main branch (trunk)
> on hgweb's graph page. Settings format is branch_name.width = value,
> where width in px e.g.:
> [graph]
> default.width = 3
>
> diff -r 878bc4a62a73 -r 537733973603 mercurial/graphmod.py
> --- a/mercurial/graphmod.py	Thu Jan 19 14:31:05 2012 -0600
> +++ b/mercurial/graphmod.py	Sun Jan 22 19:35:26 2012 +0700
> @@ -18,6 +18,7 @@
>  """
>  
>  from mercurial.node import nullrev
> +import re
>  
>  CHANGESET = 'C'
>  
> @@ -67,7 +68,7 @@
>          parents = set([p.rev() for p in ctx.parents() if p.node() in include])
>          yield (ctx.rev(), CHANGESET, ctx, sorted(parents))
>  
> -def colored(dag):
> +def colored(dag, repo):
>      """annotates a DAG with colored edge information
>  
>      For each DAG node this function emits tuples::
> @@ -83,6 +84,21 @@
>      seen = []
>      colors = {}
>      newcolor = 1
> +    config = dict()

There is another empty dict just above and it uses {}. I'm not sure
which I prefer myself, but it's important to be consistent. You should
therefore use {} here too so that you keep the coding style consistent.

> +    for key, val in repo.ui.configitems('graph'):
> +        if '.' not in key:
> +            continue
> +        branch, setting = key.rsplit('.',1)

We use PEP 8 formatting in Mercurial. Please remember to run the full
test suite before submitting patches -- test-check-code-hg.t should have
caught the missing spaces around ','.

> +        gdict = config.setdefault(branch, dict())
> +
> +        # Validation
> +        if ((setting not in ('width',)) or

I believe this is the same as

  if (setting != 'width'

right?

> +                (setting == "width" and not re.match('[0-9]{1,2}', val))):

Please don't use regular expressions for something that can be checked
with simpler string functions:

  http://docs.python.org/library/stdtypes.html#str.isdigit

-- 
Martin Geisler

aragost Trifork
Professional Mercurial support
http://www.aragost.com/mercurial/customer-projects/



More information about the Mercurial-devel mailing list