跳到主要内容

watchman-replicate-subscription

自 5.0 版本起

watchman-replicate-subscription 可以复制现有的 watchman 订阅。它向 watchman 查询订阅列表,识别源订阅(要复制的订阅),并使用相同的查询订阅 watchman。

集成者可以使用此客户端来验证他们的客户端收到的 watchman 通知,以定位异常行为。

源订阅使用 'name'、'pid' 和 'client' 参数的任意组合来标识。提供的组合必须唯一标识一个订阅。可以通过运行命令 'watchman-replicate-subscription --list PATH' 来检索受监视根的源订阅详细信息。

默认情况下,复制的订阅将采用源订阅名称,并在其前面加上子字符串“replicate: ”。“qname”选项可用于指定复制的订阅名称。

订阅可以在观察到可配置数量的事件后停止。默认值为单个事件。您也可以删除限制并允许它持续执行。

watchman-replicate-subscription 将每行打印一个事件。事件信息由已识别订阅中的字段确定,每个字段用空格(或您选择的 --separator)分隔。

订阅状态进入和状态离开 PDU 将与其他事件交错。已知的订阅 PDU(目前仅是由 mercurial fsmonitor 扩展生成的那些)将包含在方括号中。所有其他 PDU 将以 JSON 格式输出。

事件在被调度到 watchman-replicate-subscription 之前,会被 watchman 服务器整合和处理。

watchman-replicate-subscription 需要 pywatchman(因此需要 python)以及 watchman。

源订阅

$ watchman-replicate-subscription PATH -n NAME

源订阅必须是为提供的路径创建的现有订阅。可以使用 'name'、'pid' 和 'client' 参数的任意组合,前提是它们唯一标识一个订阅。可以按如下方式检索受监视根的源订阅详细信息

$ watchman-replicate-subscriptions PATH --list

然后可以使用订阅名称、pid 和客户端来复制订阅。

$ watchman-replicate-subscription PATH -n NAME -c CLIENT -p PID

控制生存时间

以下是控制 watchman-replicate-subscription 运行时间的主要两种方式

  • -t--timeout 限制执行时间
  • -m--max-events 限制要处理的事件数量

当达到超时或达到最大事件数限制时,watchman-replicate-subscription 将终止。

默认情况下,没有时间限制,但默认限制为单个事件。

您可以指定 --max-events 0 来禁用事件限制。

控制输出

watchman-replicate-subscription 将为每个事件输出一行。以下选项会影响输出

  • --separator STRING - 如果您指定了多个字段,则在打印它们时将使用分隔符字符串。默认值为 --separator " ",这将打印字段,字段之间用空格分隔。

退出状态

可以使用以下退出状态代码来确定导致 watchman-replicate-subscription 退出的原因

  • 成功等待事件或列出匹配的订阅后,返回 0
  • 如果发生某种运行时错误,则返回 1
  • 使用了 -t/--timeout 选项,并且在收到事件之前经过了该时间量,则返回 2
  • 如果执行被中断 (Ctrl-C),则返回 3