watch
从 3.1 版本开始弃用。 我们建议客户端采用 watch-project 命令。
请求监视指定目录的更改。 Watchman 将跟踪以指定路径为根的所有文件和目录。
从命令行
$ watchman watch ~/www
请注意,当您使用 CLI 时,您可以将 root 指定为 ~/www
,因为 shell 会将 ~/www
解析为 /home/wez/www
,但是当您使用 JSON 协议时,您负责提供一个绝对路径。
JSON
["watch", "/home/wez/www"]
Watchman 将对目录执行 realpath(3)
并开始监视它(如果尚未监视)。 新监视的目录将分几个阶段进行处理
- 建立内核对目录的更改通知
- 将爬取目录的请求排队
- 当目录内容被解析时,它们以类似的方式被监视
- 所有新观察到的文件都被视为已更改
除非使用 --no-save-state
服务器选项启动 watchman 服务,否则监视及其相关的触发器将被保存并在进程重启后重新建立。
不区分大小写
从 macOS 上的 2.9.9 版本开始,Watchman 对不区分大小写的文件系统提供以下级别的支持
- 查询每个监视的根目录以确定它是否不区分大小写。 这是运行 HFS+ 的大多数 Mac 系统的常见默认设置。
- 当处于不区分大小写模式时,Watchman 将尝试在观察到更改时解析文件系统上文件的真实规范名称。
- 如果文件名的大小写发生变化,Watchman 将报告删除旧名称和更改新名称。
- 当根目录位于不区分大小写的文件系统上时,匹配名称的查询表达式将默认为不区分大小写。
- Watchman 的大小写折叠是 ASCII 大小写折叠。 请注意,
match
和pcre
查询表达式术语从包含库请求大小写折叠支持,并且它们的大小写折叠行为不受 Watchman 控制,超出在根目录不区分大小写时启用它们。 path
生成器始终区分大小写。