检测在HG中创建分支或书签

时间:2014-09-08 12:16:13

标签: mercurial mercurial-hook

是否可以检测提交是否通过.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书签,并确定哪些被删除和添加,但有没有更清晰的方法来检测分支/书签添加/删除?

2 个答案:

答案 0 :(得分:2)

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

在hgrc:

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

HG_NAMESPACE将包含" bookmark"并且HG_KEY将包含书签的名称。

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

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

答案 1 :(得分:0)

  1. 书签
    • 书签处理需要提交
    • 可以为历史记录中的任何变更集创建书签,而不仅仅是当前
    • 书签可以作为数据交换(拉|推)的结果出现,而不是本地用户的行为
    • 钩子
    • 只能覆盖所有可能案件的一部分
  2. 分行
    • 更改分支始终反映在提交
    • 变更集中的分支可能与父分支不同,不仅仅是hg branch的结果(请参阅“合并分支”和“合并集”) - 而且我对此案例并不好用且易于使用解决方案< / LI>
  3. 常见说明
    • 您可以使用标准precommit挂钩(在提交之前执行并可以启用|禁用提交)来测试提交中的不同条件或或pretxncommit
    • Mercurial template-engine具有分支和书签的关键字,可在hg log -T
    • 中使用
    • 在pretxncommit中,钩子提交已经存在,但尚未最终确定 - 这意味着你可以使用任何Mercurial命令中的-r tip和tip的父级来使用commit的数据进行操作
  4. 钩子身体的脏骨架

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

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

    PS:EnsureCommitPolicy WikiMercurial pre commit hook topic启发的想法