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