gpt4 book ai didi

mercurial - 在 mercurial 中使用钩子(Hook)与包装命令

转载 作者:行者123 更新时间:2023-12-01 01:32:31 25 4
gpt4 key购买 nike

使用钩子(Hook)与使用为特定任务包装命令的扩展有什么相对的优缺点?

换句话说,决定是使用钩子(Hook)还是包装命令的标准是什么?

还请列出一种方法是唯一选择的情况。我能想到的一种情况是为现有命令添加新参数。您还可以更改/删除参数,例如我默认 loglog -g但是 graphlog在存在一些“不兼容”参数的情况下中止(参见 graphlog.check_unsupported_flags ),所以我添加了一个 log要删除的包装 -g在这些情况下,因为强制堕胎是危害人类罪。

感觉钩子(Hook)更干净利落。 Python Hook 在 hg 进程中运行,因此不存在性能问题。虽然它易于使用extensions.wrapcommand要创建命令包装器,创建/禁用钩子(Hook)并调整它们的应用顺序(它们首先应该是自包含的)是微不足道的。

这是来自 hgrc doc 的引述建议在 pre/post 命令钩子(Hook)上使用标准钩子(Hook),但它也适用于包装器上的钩子(Hook):

... hooks like "commit" will be called in all contexts that generate a commit (e.g. tag) and not just the commit command.



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

(我希望 1.5k+ 的用户可以创建一个 mercurialhooks 标签。Git 粉丝已经用 githooks 击败了我们。)

最佳答案

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

如果一个人用 python 编写,那么钩子(Hook)和扩展之间几乎没有区别:

  • 两者都可以深入研究反复无常的内部结构
  • 两者都要求用户修改他们的.hgrc启用它们
  • 两者都可以包装/拦截命令

  • 我认为您的日志命令参数修改可以通过 pre-log 来完成。 hook 除了作为扩展完成。

    TL;DR:如果你用 python 编写,那差别不大,如果你不是钩子(Hook),那是你唯一的选择。

    关于mercurial - 在 mercurial 中使用钩子(Hook)与包装命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857879/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com