This looks good to me.
Excerpts from Yuya Nishihara's message of 2016-10-08 19:05:16 +0200:
> # HG changeset patch
> # User Yuya Nishihara
> # Date 1475933066 -7200
> # Sat Oct 08 15:24:26 2016 +0200
> # Node ID 83e6528647265043ed30be784e0db8fd59133230
> # Parent 2def3d55b1b9ec2acd53f96ca755d778b5ec865b
> templater: add relpath() to convert repo path to relative path (issue5394)
>
> File paths in template are repository-absolute paths. This function can be
> used to convert them to filesystem paths relative to cwd. This also converts
> '/' to '\\' on Windows.
>
> diff --git a/mercurial/templater.py b/mercurial/templater.py
> --- a/mercurial/templater.py
> +++ b/mercurial/templater.py
> @@ -713,6 +713,18 @@ def localdate(context, mapping, args):
> tzoffset = util.makedate()[1]
> return (date[0], tzoffset)
>
> +@templatefunc('relpath(path)')
> +def relpath(context, mapping, args):
> +"""Convert a repository-absolute path into a filesystem path relative to
> +the current working directory."""
> +if len(args) != 1:
> +# i18n: "relpath" is a keyword
> +raise error.ParseError(_("relpath expects one argument"))
> +
> +repo = mapping['ctx'].repo()
> +path = evalstring(context, mapping, args[0])
> +return repo.pathto(path)
> +
> @templatefunc('revset(query[, formatargs...])')
> def revset(context, mapping, args):
> """Execute a revision set query. See
> diff --git a/tests/test-command-template.t b/tests/test-command-template.t
> --- a/tests/test-command-template.t
> +++ b/tests/test-command-template.t
> @@ -3521,6 +3521,15 @@ Test files function
>0
>
>
> +Test relpath function
> +
> + $ hg log -r0 -T '{files % "{file|relpath}\n"}'
> + a
> + $ cd ..
> + $ hg log -R r -r0 -T '{files % "{file|relpath}\n"}'
> + r/a (glob)
> + $ cd r
> +
> Test active bookmark templating
>
>$ hg book foo
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel