templating compatibility between 3.4 and 4.1

Danek Duvall danek.duvall at oracle.com
Wed Apr 19 18:50:03 UTC 2017


We're trying to roll out a cute bit of templating-fu that does some
highlighting of keywords in descriptions.  It works pretty well.
Unfortunately, the same style file doesn't work on both 3.4 (which is still
in reasonably heavy use) and later versions (3.7, 4.1).  I know there were
some BC changes in 3.5, so I assume we're running into those, but I'm
wondering if there's some way to write the templates so they work across
versions.

I'm happy to share the full version of the template, but here's a simple
test case.  It has to do with sub() and using backreferences, and the
quoting involved.

If I specify the template on the commandline, it works just fine on both
versions (this is a recent changeset in the mercurial repo):

    $ hg log -r ed42e00a5c4e -T '{sub("pro(gress)", "con\\1", desc)}\n'

but if I move the template to a style file:

    $ cat /tmp/hgstyle
    changeset = '{sub('pro(gress)', 'con\\1', desc)}'
    $ hg log -r ed42e00a5c4e --config ui.style=/tmp/hgstyle

then while this work with 4.1, I get a ^A character where I should simply
see "gress".  I can get it to work with 3.4 if I use "r'con\\1'", but then
that doesn't work with 4.1 -- it gives me a literal "\1".

Is there anything we can do here, or are we going to be limited to using
one style file when using 3.4, and another when using something more
recent?

Thanks,
Danek


More information about the Mercurial mailing list