Clockspec
对于基于时间查询的命令,watchman提供了几种不同的时间测量方法。
- 自Unix纪元以来的秒数(Unix
time_t
风格) c:123:234
形式的时钟IDn:whatever
形式的命名游标(但时钟ID更快!)
第一个也是最明显的方法是传递Unix时间戳。 Watchman记录文件更改的观察时间,并允许您查找自该时间以来已更改的文件。 使用时间戳容易出现竞争条件,从而难以理解文件树的完整状态。
使用抽象时钟ID可以将客户端与这些竞争条件隔离开来,因为它是在检测到更改时(而不是随着时间的推移)滴答计时。 Watchman在传递匹配结果时返回当前时钟ID;您可以在下一个时间相关的查询中使用该值作为clockspec,以便获得对已更改文件的无竞争评估。
为方便起见,watchman可以通过将客户端定义的游标名称与客户端关联来维护客户端最后观察到的时钟。 例如,您可以在第一次调用时枚举所有“C”源文件
watchman since /path/to/src n:c_srcs '*.c'
当您第二次运行它时,它只会显示自上次有人使用“n:c_srcs”作为时钟规范进行查询以来已更改的“C”源文件。 但是,不可能“回滚”命名游标,因此需要此类功能的高级用户应改用时钟ID。
自 4.7 版本起。
我们建议不要使用 n:whatever
形式,因为它需要对视图进行独占锁定才能执行;这会增加争用并导致查询速度变慢。