首页 > 解决方案 > mercurial extensions:高效的模板关键字实现

问题描述

我正在编写一个 mercurial 扩展,但我发现模板渲染相当慢。

我最初使用的是cmdutil.rendertemplate(),但是,似乎每次都必须重新解析模板字符串,这相当慢。

当切换到 的“新” api 时@templatekeyword,看起来传递的第一个 arg 是一个mercurial.templater.engine对象,它有一个expand缓存模板的解析版本的方法,这使它更快。不幸的是,它不会扩展 aliases

有谁知道有效地为 mercurial 扩展呈现模板和别名的正确方法?现在,我看到的唯一选择是复制/粘贴部分cmdutil.rendertemplate并保留我自己的全局缓存......但这感觉很恶心。

标签: mercurialmercurial-extension

解决方案


假设你需要

  • [templates]呈现从该部分以外的其他地方加载的用户模板,
  • 在关键字函数中,

目前的方法是将加载的模板放在第一个[1],然后通过[2]templater.cache[name]渲染它。context.process(name, mapping)

  1. https://www.mercurial-scm.org/repo/hg/file/4.7.1/mercurial/cmdutil.py#l2643
  2. https://www.mercurial-scm.org/repo/hg/file/4.7.1/mercurial/templatekw.py#l474

我不确定你所面临的情况是否如此。根据上下文可能有更好的方法。


推荐阅读