【问题标题】:Detect creating of branches or bookmarks in HG检测在 HG 中创建的分支或书签
【发布时间】:2014-09-08 12:16:13
【问题描述】:

是否可以通过 .hgrc 中的钩子检测提交是否创建了新的书签或分支?

我尝试使用 hg 日志查看是否可以找到,但它只显示提交已创建的分支/书签:http://hgbook.red-bean.com/read/customizing-the-output-of-mercurial.html

似乎没有钩子:http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html

我认为它没有钩子是有道理的,因为也不可能做出“只是”创建分支的提交,指示分支/书签仅在添加到特定时才存在提交。

我想我可以在每次提交之前和之后检查 hg 分支和 hg 书签,并确定哪些被删除和添加,但是有没有更简洁的方法来检测分支/书签添加/删除?

【问题讨论】:

    标签: mercurial mercurial-hook


    【解决方案1】:

    pushkeyprepushkey 挂钩可以检测书签的添加、删除和移动。

    在 hgrc 中:

    [hooks]
    prepushkey=echo %HG_NAMESPACE% %HG_KEY% %HG_OLD% %HG_NEW%\n >> out.txt
    

    HG_NAMESPACE 将包含“书签”,HG_KEY 将包含书签名称。

    HG_OLD 将包含书签在操作之前的提交的哈希值。如果正在创建书签,则不会设置。

    HG_NEW 将包含书签在操作之后的提交的哈希值。如果正在删除书签,则不会设置。

    【讨论】:

      【解决方案2】:
      1. 书签
        • 书签处理不需要提交
        • 可以为历史中的任何更改集创建|修改书签,而不仅仅是当前的
        • 书签可能是数据交换(拉|推)的结果,而不是本地用户的操作
        • 所有可能的情况中只有一部分可以被钩子覆盖
      2. 分支机构
        • 更改分支始终反映在提交中
        • 变更集中的分支可能与父分支不同,这不仅是因为 hg branch(请参阅“合并分支”和“合并集”)的结果 - 而且我还没有适合这种情况的简单易用的解决方案
      3. 常用说明
        • 您可以使用标准的precommit 钩子(在提交之前执行并且可以启用|禁用提交)来测试提交中的不同条件或pretxncommit
        • Mercurial 模板引擎具有分支关键字和书签,可在hg log -T 中使用
        • 在 pretxncommit 中,钩子提交已经存在,但尚未最终确定 - 这意味着您可以在任何 Mercurial 命令中使用 -r tip 和小费的父级操作提交的数据

      钩子的脏骨架

      hg log -T "{KEYWORD}\n" -r "tip + tip^" | ....

      其中 KEYWORD 可能是 branchbookmarks。日志的结果是两个字符串的输出,可以相同也可以不同(不确定书签,TBT!!),你必须比较(你想要并且可以)

      PS:灵感来自EnsureCommitPolicy WikiMercurial pre commit hook topic 这里

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 2010-12-19
      • 2019-08-11
      • 2016-01-11
      相关资源
      最近更新 更多