代码之家  ›  专栏  ›  技术社区  ›  Geoffrey Zheng

在mercurial中使用hooks与wrapping命令

  •  4
  • Geoffrey Zheng  · 技术社区  · 14 年前

    还请列出一种方法是唯一选择的情况。我能想到的一种情况是为现有命令添加新参数。您还可以更改/删除参数,例如I default log log -g 但是 graphlog graphlog.check_unsupported_flags ),所以我添加了 日志 要删除的包装 -g

    感觉钩子更干净。Python钩子在hg进程中运行,因此没有性能问题。虽然它很容易使用 extensions.wrapcommand 要创建命令包装器,创建/禁用钩子并调整它们的应用顺序(它们首先应该是自包含的)是很简单的。

    hgrc doc

    ... 像“commit”这样的钩子将在生成commit的所有上下文(例如标记)中被调用,而不仅仅是commit命令。

    另外,我猜钩子不受GPL的约束(或者它们是吗?),而命令包装器 extensions are

    mercurialhooks 标签。Git fan男孩用 githooks .)

    1 回复  |  直到 14 年前
        1
  •  4
  •   Ry4an Brase    14 年前

    我不能谈论许可问题,但是钩子和扩展之间最大的区别是钩子可以用任何语言编写,而扩展总是python。

    • 两者都可以深入研究水银的内部结构
    • .hgrc 使他们
    • 两者都可以包装/截获命令

    我认为你的日志命令参数修改可以通过 pre-log 钩子除了被做为一个延伸。

    TL;DR:如果你是用python写的话,没有什么区别,如果你不是,钩子是你唯一的选择。

    推荐文章